クリエイターの教科書

ChatGPT, Stable Diffusion, Visual Studio, Excelなど教科書

【Visual Studioの教科書】C#でゲーム作り実践編(2):じゃんけんゲーム作り

こんかいはじゃんけんゲームです。グー、チョキ、パーを選ぶと勝敗を判定するというものです。前回の「占いゲーム」の続編的な作りといえます。

じゃんけんゲーム

paper scissors stone

グー、チョキ、パーボタンのどれかを選ぶと、相手もグー・チョキ・パーどれかを出して勝敗を判定するというシンプルなものです。

 

前回の「占いゲーム」に近い作りですが、今度は関数を作って処理を一本化していきましょう。

 

下準備

フォームに3つボタンを作り、ぐー、ちょき、ぱーと名前を変えておきます。

結果を表示するためのTextBoxもつくり、プロパティでMultilineをTrueにしておきます。

f:id:apicode:20200709155845p:plain

 

プログラム

ぐー、ちょき、ぱーと3つボタンがありますが、やることは一緒なので処理を関数として1まとめにしておきましょう。

 

まずグーボタン、チョキのボタン、パーのボタンにそれぞれ以下のようにプログラムを書きます。

それぞれ同じ「doHnatei(数字)」という関数へ違った数値を渡すようにしています。

数字のところは0ならグーを、1ならチョキを、2ならパーを押されたものと内々のマイルールをつくっておきます。

//--ぐーぼたん
private void button1_Click(object sender, EventArgs e)
{
doHantei(0);
}

//--チョキボタン
private void button2_Click(object sender, EventArgs e)
{
doHantei(1);
}

//--パーボタン
private void button3_Click(object sender, EventArgs e)
{
doHantei(2);
}

 

このまま実行しても「doHantei」の部分を書いていないのでエラーになります。

f:id:apicode:20200709160355p:plain

 

「Form1.cs」内に「doHantei」という関数を追加します。

()で引き渡された自分のグーチョキパーの手をiJibunという数値して扱います。

 

まず、相手の出す手を計算します。計算といってもランダムで0,1,2のどれかがでるようにしてるわけです。「Random rnd = new Random();」でランダム用のオブジェクトを作り「int iTeki = rnd.Next(3);」で数を発生させます。

 

次に、数値が0ならグーを、1ならチョキをということで配列を使って表示してます。

「string arrayHand;」で文字の配列を作り、 「arrayHand = new string[3] { "グー", "チョキ", "パー" };」としてデータをセットしておきます。

 

最後に勝敗を判定します。同じ数値なら「あいこ」とします。

ここはIF文で条件分岐をしていきます。

ただロジックはまだ間違えてるかもしれませんので、とりあえずバージョンのものを載せています。

private void doHantei(int iJibun)
{
//--敵のぐーちょきぱーをランダムで計算する
Random rnd = new Random();
int iTeki = rnd.Next(3);

//--持ち手の情報を表示する
string arrayHand;
arrayHand = new string[3] { "グー", "チョキ", "パー" };
string sResult;
sResult = "自分の手は" + arrayHand[iJibun] + ",相手の手は" + arrayHand[iTeki] + "です。";

//--勝敗を判定する
if(iJibun == iTeki)
{
sResult += "あいこです";
}
else if (iJibun == 0 &iTeki == 2)
{
sResult += "相手の勝ちです";
}
else if (iJibun < iTeki)
{
sResult += "あなたの勝ちです";
}
else if (iJibun < iTeki)
{
sResult += "あなたの負けです";
}
textBox1.Text = sResult;
}

 

 

後は動作確認をしましょう。

自分の押したボタンの手札がちゃんと表示されているか、自分と相手の手札でただしく勝敗が判定されているかをチェックしましょう。

f:id:apicode:20200709161603p:plain

 

あとは、あいこのときや勝った時など、ケースに応じて画像を表示したり、サウンドを切り替えて鳴らすようにすればだいぶゲームっぽくなると思います。

 

 

ちなみにじゃんけん協会による必勝法では「困ったらパー」というものです。

参考:勝利の法則 - 日本じゃんけん協会

 

 

 

 

C#でのゲーム作りは以下参照ください。

www.kyoukasho.net

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

プライバシーポリシー |〇利用規約 |〇問い合わせ