「プログラミングって難しそう」って思っている方必見。
C#で開発を行うことに、手軽にアプリを作ることができます。
今回はC#でじゃんけんゲームを作っていきます。
C#とは
Microsoft社が開発したプログラミング言語です。
Visual Studioをインストールすることで、開発からリリースまで素早く行うことができます。
Visual Studioのインストール
アプリ開発を行うツールである、Visual Studio(community)をMicrosoft公式よりダウンロード・インストールします。
新規プロジェクトを作成する
インストールしたVisual Studioを起動すると開始ウィザードが起動します。
「新しいプロジェクト」の作成をクリックします。
「Windowsフォームアプリケーション」を探してクリックします。
プロジェクト構成の入力画面が表示されます。
「プロジェクト名」へ任意のものを入力します。今回は「JankenApp」としました。
プロジェクトデータの作成場所を任意のものを入力します。今回はドライブ直下に「C#」というフォルダを作成しその配下としました。
「フレームワーク」を選びます。新しい方が良いと思うので「4.8」としました。
「作成」ボタンをクリックします。
しばらく待つとプロジェクトが作成されます。
画面をデザインする
作成するじゃんけんゲームは、ユーザーがグー・チョキ・パーのいずれかを選択し、CPUと勝負するというものです。
まずは、ユーザーが出す手をボタンで作成します。
VisualStudioの上部の「表示」タブを開き、「ツールボックス」をクリックします。
ツールボックスウィンドウが表示されたら、「Button」をクリックし「Form1」でクリックします。そうすると「buton1」が作成されます。簡単でしょう?
次にボタンの名前を変えていきます。
VisualStudioの上部の「表示」タブを開き、「プロパティウィンドウ」をクリックします。
「プロパティ」ウィンドウが表示されます。対象はbutton1を表示しています。button1以外のプロパティが表示されている場合は、Form1上のbutton1をクリックしてください。button1のプロパティが表示されます。
この時、ウィンドウ上部のピンマークが横を向いているとタブが自動で隠れてしまいます。一々隠したくない場合は、このピンマークをクリックしておきましょう。
ボタンの名称変更は「Text」プロパティを変更することで行えます。
「Text」プロパティを「グー」に変えると、Form1上にあるボタンの表示も「グー」へ変わります。
同じ要領で「チョキ」ボタンと「パー」ボタンも作ります。
続いて、じゃんけんの出した手を表示します。表示には「Label」使います。
ボタンを配置した時と同様に「ツールボックス」ウィンドウから「Label」をクリックし、Form1上をクリックします。そうすると、Form1にlabelが配置されます。
Labelの表示変更もプロパティウィンドウの「Text」プロパティにより行えます。
Labelを使って画面を整えます。
「グー・チョキ・パー」のLabelは、ボタンが押された時に変更します。あとで制御しやすいよう、名前を変えておきます。
「グー・チョキ・パー」のLabelをクリックし選択します。選択後、「プロパティ」ウィンドウの「Name」を変更します。筆者の環境では、変更前は「label3」と表示されています。
「label3」を「labelCPU」へ変更します。
もう一つの「グー・チョキ・パー」のLabelは、「labelPLAYER」へ変更します。
以上で、UIの設定は終わりです。次はじゃんけんゲームの処理を書いていきます。
CPUと戦う処理を書こう
次にCPUと戦う処理を書いていきます。
流れは、
1.プレイヤーがグー・チョキ・パーのいずれかを選択する。
2.CPUは、ランダムでグー・チョキ・パーを選択する。
3.それぞれの出した手から勝敗を判定し表示する。
となります。勝敗の判定はメッセージボックスで表示します。
では、実際に書いていきます。
まずは、プレイヤーの出した手を検出する処理です。
プレイヤーが「グー」ボタンを押した時、ゲームは「グー」ボタンを押されたことを知る必要があります。つまり「グー」ボタンのクリックを監視することです。
これをプログラミング的に言い換えると、「グー」ボタンのクリックイベントに「グーが選択された」処理を追加することになります。
ボタンへのクリックイベントの追加は以下のように行います。
「グー」ボタンをダブルクリックします。
コードの書かれた画面が自動で表示されます。
VisualStudioではボタンをダブルクリックすると、クリックイベントが自動で追加されます。
このコードの「private void button1_Click(object sender, EventArgs e)」に、ボタンが押された時の処理を書いていけば良いわけです。
まずは確認のため、メッセージボックスを表示させてみます。
以下の処理を追加してください。
MessageBox.Show(“グーが押されました。”); を追加してください。
では、一旦動かしてみます。
デバッグタブにある「デバッグの開始」をクリックします。
先ほど作成した画面が、一つのアプリとして起動してきます。試しに「グー」ボタンをクリックすると「グーが押されました。」と書かれたメッセージボックスが表示されます。クリックイベントの登録成功です。
確認できたら、先ほどのコードを入力する画面へ戻ります。
赤い▬ボタンを押すことで、コードの入力画面へ戻ります。
次にCPUの出す手を取得します。
CPUの出す手はランダムに決定します。また、その処理はメソッドと呼ばれる処理をまとめた書き方で実装します。
private string GetCpuHand を追加します。これはメソッドです。private はアクセス修飾子、stringは戻り値のデータ型(今回はstring:文字列型)、GetCpuHandはメソッド名を表します。
次に、勝敗の判定を行う処理を書いていきます。こちらもメソッドで実装していきます。
private string Decides(string playerHand, string cpuHand)を追加します。()内は引数を定義しています。引数とはメソッドを呼び出すときに、外部から入力する値となります。
つまりこのメソッドは「プレイヤーの出した手とCPUの出した手を入力すると結果を教えてくれる」ものとなります。
メソッドが長かったため、途中省略しています。以下メソッド全文です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// じゃんけんの勝敗を判定する。 private string Decides(string playerHand, string cpuHand) { string result = ""; if (playerHand == "グー") { if (cpuHand == "グー") { result = "あいこです。"; } else if (cpuHand == "チョキ") { result = "プレイヤーの勝ちです。"; } else { result = "CPUの勝ちです。"; } } else if (playerHand == "チョキ") { if (cpuHand == "グー") { result = "CPUの勝ちです。"; } else if (cpuHand == "チョキ") { result = "あいこです。"; } else { result = "プレイヤーの勝ちです。"; } } else { if (cpuHand == "グー") { result = "プレイヤーの勝ちです。"; } else if (cpuHand == "チョキ") { result = "CPUの勝ちです。"; } else { result = "あいこです。"; } } return result; } |
次に、ゲームを進めるメソッドを書きます。このメソッドは主に画面への表示を行います。
private void Progress(string playerHand) を記述します。
では、このProgressメソッドを「グー」ボタンから呼び出してみましょう。
先ほど書いた、「MessageBox…..」の前に//(スラッシュ2個)を付けます。スラッシュを付けることで、コメントとして認識され実行されなくなります。
そしてProgressメソッドを呼び出す処理を記述します。引数には「グー」を渡します。
ここで一旦実行してみましょう。
デバッグタブのデバッグの開始をクリックします。
「グー」ボタンを押すたびに、それぞれの出した手が更新され、勝敗が表示されます。
確認できたら、デバッグを終了します。
最後に、チョキとパーボタンが押された場合の処理を記述します。
Form1[デザイン]のタブをクリックして切り替えます。
「チョキ」ボタンをダブルクリックします。
チョキボタンのクリックイベントが自動で追加されますので、Progressメソッドの呼び出しを記述します。引数はチョキを指定します。
パーボタンも同様に行います。
完成
じゃんけんゲームのベースを作成することができました。
UIのおよび処理の実装をご理解頂けたでしょうか。
しかし、ゲームとしては非常に殺風景なものとなっています。
さらにゲームっぽくするには画像と音楽(効果音)が必要です。
画像と音楽の追加も手軽にできるため今後、ご紹介していきたいと思います。
※2023年6月3日追記
画像追加編を更新しました。
コメント