こんかいはじゃんけんゲームです。グー、チョキ、パーを選ぶと勝敗を判定するというものです。前回の「占いゲーム」の続編的な作りといえます。
じゃんけんゲーム
グー、チョキ、パーボタンのどれかを選ぶと、相手もグー・チョキ・パーどれかを出して勝敗を判定するというシンプルなものです。
前回の「占いゲーム」に近い作りですが、今度は関数を作って処理を一本化していきましょう。
下準備
フォームに3つボタンを作り、ぐー、ちょき、ぱーと名前を変えておきます。
結果を表示するためのTextBoxもつくり、プロパティでMultilineをTrueにしておきます。
プログラム
ぐー、ちょき、ぱーと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」の部分を書いていないのでエラーになります。
「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;
}
後は動作確認をしましょう。
自分の押したボタンの手札がちゃんと表示されているか、自分と相手の手札でただしく勝敗が判定されているかをチェックしましょう。
あとは、あいこのときや勝った時など、ケースに応じて画像を表示したり、サウンドを切り替えて鳴らすようにすればだいぶゲームっぽくなると思います。
ちなみにじゃんけん協会による必勝法では「困ったらパー」というものです。
C#でのゲーム作りは以下参照ください。