C#はMicrosoftが同社の.NET Frameworkでの中心言語とすべく開発した、比較的新しい言語です。 それまでの主要な言語(C++、Java、Visual Basic、Delphiなど)を下地に設計しているため、 実務的な「使える」言語になっています。
開発環境は無料ですし、GUIアプリも、Webアプリも、ゲームだって効率よく作成できます。 そこのあなた、C#でプログラミング始めてみませんか?
C#の開発環境としては、 Microsoft社が初心者向けに無料で提供しているVisual C# 2005 Express Edtion(以下Visual C#)を使用するのが簡単です。 ただし、Visual C#はWebインストールの場合はユーザー登録が必要です。 それが嫌な方は、isoイメージからインストールすることができます。 また、IDEのような大きなソフトをインストールしたくない方はコンパイラといくつかのツールがセットになった.NET Framework 2.0 SDKをインストールしてもいいでしょう。 以下、それぞれのインストール方法について説明します。
Webインストールの場合、基本的に難しい点はありません。 MicrosoftのVisual C#のページで「Webからインストール」をクリックし、インストールするだけです。 途中、「SQL Server 2005 Express Edition」をインストールするかどうかのチェックがありますが、ハードディスクに余裕があるなら入れておいたほうがいいでしょう。 インストールが完了するとユーザー登録を促されますので登録します。
isoイメージからインストールする場合、ここを参考にしてください。 isoイメージからなんらかのソフトウェアでファイルを展開します。インストール自体はWeb版と同様です。こちらの場合、ユーザー登録が必要ないようです(本スレJavaの人より。多謝)。
ドキュメントとして「MSDN Express Library」があります。 なるべくならこれもインストールしておきましょう。
まだ.NET Framework 2.0をインストールしていない方は、SDKをインストールする前にインストールしておきます。 Windows Updateのカスタム更新で.NET Framework 2.0を追加するか、
上記2つをインストール済みなら、Microsoftの.NET Frameworkのダウンロードページから .NET Framework 2.0 SDK 日本語版をダウンロードし、インストールします。
ソースコードをexeファイルなどに変換するために「コンパイル」という作業が必要になります。 ソースコードをコンパイルするためのソフトウェアを「コンパイラ」と呼び、C#のコンパイラはcsc.exeです。 ソースコードはテキストエディタ(Visual C#には強力なエディタがもれなく付いてきます)で記述し、csという拡張子で保存します。 以下、それぞれの環境でのコンパイルの仕方を説明します。
IDEを利用したプログラムの作成方法を説明します。 Visual C#をインストールすると.NET Framework 2.0 SDKもインストールされるため、次節の.NET Framework 2.0 SDKでのやり方でもプログラムを作成可能です。
基本的にはコンソールアプリケーションと同じですが、プロジェクトの種類を選ぶ際に「Windows アプリケーション」を選択します。
その他、詳しい使い方はヘルプや解説書、解説サイトを参照してください。
コマンドプロンプトでの操作が基本となります。 コマンドプロンプトを使ってみよう!などを参考に、 「cd」「dir」くらいは使えるようになっておいてください。 コンパイラのある場所(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)にパスが通っていませんので、必要ならばパスを通してください。 「パスを通す」の意味がわからない方は、 「スタート」→「すべてのプログラム」→「Microsoft .NET Framework SDK v2.0」→「SDK コマンドプロンプト」で起動できる、SDK コマンドプロンプトを使用しましょう。 パスを通す必要がありません。
例えばexample.csというソースをコンパイルする場合、ソースのあるフォルダに移動して
csc example.cs
でコンパイルを実行します。 エラーがなければ、ソースコードのあるフォルダにexample.exeが生成されているはずです。ダブルクリックするか、
example
で実行できます。
基本的にはコンソールアプリケーションと同じですが、コンパイラに引数として/target:winexeを渡します。 MyGUI.csをコンパイルしたい場合、
csc /target:winexe MyGUI.cs
となります。
以下のコードをコンパイルして実行してみましょう。
using System; namespace VIP { class MyFirstApp { public static void Main() { Console.WriteLine("Hello World!"); } } }
実行すると、コマンドプロンプトに
Hello World!
と表示されます。
続いて、GUIアプリケーションも製作してみましょう。 以下のコードをコンパイルし、コマンドプロンプト上で実行するか、生成されたexeファイルをダブルクリックしてみましょう。
using System; using System.Windows.Forms; namespace VIP { class MyFirstGUIApp : Form { public MyFirstGUIApp() { this.MouseClick += delegate(Object sender, MouseEventArgs e) { MessageBox.Show("Hello World!"); }; } public static void Main() { Application.Run(new MyForm()); } } }
ウィンドウの内側をクリックすると「Hello World」と書かれたメッセージボックスが出てくるはずです。
C#の開発はVisual Studioを使用するのが便利です。タダですしね。ただし結構重いソフトなのでSharpDevelopなどの使用も検討しましょう。導入方法は上記の通りです。
「ファイル」→「新しいプロジェクト」で新しいプロジェクトを作ることが出来ます。ソフトウェアは普通複数のソースファイルやリソースなどから構成されます。それらを1つにまとめて扱うものがプロジェクトです。1アプリ1プロジェクトが普通でしょうか。
新しいプロジェクトにはいろいろ種類があります。スクリーンセーバースタートキットとムービーコレクションスタートキットはサンプルプログラムです。オンラインテンプレートの検索は機能してません(笑)。
これからのチュートリアルではWindowsアプリケーションとコンソールアプリケーションを使います。それぞれGUIとCUIに相当します。作るアプリケーションによってどちらかを選択します。
まずはコンソールアプリケーションを選択しましょう。
右側にソリューションエクスプローラがあります。ここはソリューション(今はプロジェクトと同義だと思ってください)に存在しているファイルなどが表示されます。.csのファイルがC#のソースです。
真ん中のコードが表示されている画面を編集画面といいます。コードなどはここに表示され、編集することになります。タブもついています。
HelloWorldを作成しましょう。Program.csが開いていると思いますが、そこに書き足します。
C#は最初の"おまじない"が多い言語だと思います。あとからいろいろ解説します。とりあえずVSが自動で作ってくれるので置いておきましょう。
static void Main(string[] args)を探しましょう。ここがプログラムが最初に実行される場所になります。{}の中に命令を書くことになります。文字を表示する命令は System.Console.WriteLine("HelloWorld"); です(長い^^)。
VSにはIntelliSenseと呼ばれる入力を補助してくれる機能があります。Sから入力すると候補が絞られていきます。.やTabと打つと残りは自動で入力されます。そこでまたConsoleと打っていきます。以下同様。この機能をうまくつかうとスペルミスなどを防げるので積極的に使用しましょう。
それでも表示するだけなのに長い^^ 。そのためコードスニペットというものが用意されています。Ctrl+k , x , cw , Enter と打つとあら不思議!
「デバッグ」→「デバッグ開始」またはF5または緑の三角ボタンで実行できます。 ただすぐに画面が消えてしまいますのでデバッグなしで実行をすると表示された画面を確認できます。
次にWindowsアプリケーションを作成しましょう。新しいプロジェクトを作成します。すると編集画面にコードではなくウィンドウが表示されたと思います。これはデザイナといいます。左のツールボックスには部品が納められています。適当にButtonなどをフォームにドラッグしてみましょう。ボタンが追加されましたか?大きさや位置の変更なども出来ます。
右側にプロパティと書かれた場所がると思います。ここはボタンを選択したらボタンの設定を変更したり出来ます。試しにBackColorを変更してみましょう。
実行はコンソールアプリケーションと一緒です。F5でおk
文字の表示はさっきと同じ System.Console.WriteLine(); です。()の中に"HelloWorld"と書くと画面にHelloWorldと表示されます。文字は""で囲むことになってます。お兄さんとのお約束だ。
()の中にかけるのは文字だけではありません。8+5と書いてみましょう。(""はつけてはいけません 数字なので)。13と表示されましたか?掛け算は* 割り算は/の記号を使います。コンピュータの世界のしきたりです。郷に入っては郷に従いましょう。
変数とはデータを保存しておく箱のようなものです。書式は
型名 変数名 (=初期値);
です。型名とは保存するデータの種類のことです。文字列は string 整数はintなどがあります。初期値は省略可能です。
先ほどのWriteLineを消して string message = "働け"; System.Console.WriteLine(message);
にしてみましょう 。messageという単語ではなくて働けとでましたね?これが変数です。
このプログラムでは関数、グラフィックス、イベント、数学などをさらっと学んでもらう。これはゲームなんかにも応用できるので学んで損はないはずだ。
ちなみに数学は高校レベルのだけど偏差値40の俺が教えるから泥舟に乗ったつもりでよろしく
わからないところは本スレで聞けばOK
プログラムは次のような感じになる。頭に入れておこう
まずは普通にwindowsアプリケーションを選んで準備しよう。今回は簡単のため300×320の決め打ちでいきます。Form1のプロパティ 配置のところのsizeを300,320にしてください
次はタイマーコントロールを設置します。左のツールボックスからTimerをダブルクリック。Timerコントロールのintervalプロパティを1000に(単位はミリ秒なので)
できたtimer1をダブルクリックすれば
private void timer1_Tick(object sender, System.EventArgs e){・・・
が勝手に作られているはずです。これが1秒ごとに呼び出されます。本当はいろいろ書かないといけないけどVisual Studioはなんと全自動。楽しちゃえ
ここで画面を更新してあげればいいですね。
private void timer1_Tick(object sender, System.EventArgs e) { this.Refresh(); }
まずはPaintイベントを受け取りましょう。
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { }
IDEならマウスだけでいけますね。これからは{}の中に書いていきます。
時刻の取得はDateTime.Nowでできます。
DateTime dt = DateTime.Now;
でdt.Hourで時刻が取り出せます。以下同様
まずキャンパスを準備しましょう。
Graphics g = e.Graphics; g.Clear(Color.White);
ここではgがキャンパスです。1行目でキャンパスを取得して、2行目で白で塗りつぶしてます。これで準備完了
今回は簡単のため針は線で描きます。線は始点と終点がわかれば描けます。始点は中心の(150,150)に今回はしましょう。お勉強するのは終点の求め方です。図で適当に解説します
private Point calc_endPoint(int r,int t,int interval) { //r:半径 t:時間 interval|目盛りの間隔 double cof = 2*Math.PI/interval; int x = (int)(r*Math.Sin(cof*t))+center.X; int y = (int)(-r*Math.Cos(cof*t))+center.Y; return new Point(x,y); }
終点を求める関数はこんな感じ。rは長さですね
private readonly Point center = new Point(150,150);
は適当に用意しといてください
DrawLineの使い方はMSDNでも見てもらうとしてこんな感じ
g.DrawLine(new Pen(Color.Red,3),center,calc_endPoint(100,dt.Hour,12)); //時 g.DrawLine(new Pen(Color.Yellow,3),center,calc_endPoint(130,dt.Minute,60)); //分 g.DrawLine(new Pen(Color.Black,1),center,calc_endPoint(130,dt.Second,60)); //秒
色は見やすいように適当に。3や1のところが太さですね。後ろの引数は始点と終点を表してます。
//ここは自動で書かれると思います 結構省略してます private System.Windows.Forms.Timer timer1; private void InitializeComponent() { this.timer1.Enabled = true; this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); this.ClientSize = new System.Drawing.Size(292, 286); } //こっから書いてね private readonly Point center = new Point(150,150); private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { DateTime dt = DateTime.Now; Graphics g = this.CreateGraphics(); g.Clear(Color.White); g.DrawLine(new Pen(Color.Red,3),center,calc_endPoint(100,dt.Hour,12)); //時 g.DrawLine(new Pen(Color.Yellow,3),center,calc_endPoint(130,dt.Minute,60)); //分 g.DrawLine(new Pen(Color.Black,1),center,calc_endPoint(130,dt.Second,60)); //秒 } private Point calc_endPoint(int r,int t,int interval) { //r:半径 t:時間 interval|目盛りの間隔 double cof = 2*Math.PI/interval; int x = (int)(r*Math.Sin(cof*t))+center.X; int y = (int)(-r*Math.Cos(cof*t))+center.Y; return new Point(x,y); } private void timer1_Tick(object sender, System.EventArgs e) { this.Refresh(); }
ファイル添付できるようになったら図とかソースとうpします 間違ってたら書き直してくれ
文字盤とかは簡単にできるはずなんで自分で用意してやってみてください