using System.Runtime.CompilerServices;
namespace JankenForm_Matsuda;
public partial class JankenForm : Form {
/**************************
* インスタンスメンバー
**************************/
///<summary>フォームのコンストラクタ</summary>
public JankenForm() {
InitializeComponent();
resetBtn();
}
/*------------------------------
* コントロールイベントハンドラ
------------------------------*/
///<summary>グーボタンクリック</summary>
private void btnGu_Click(object sender, EventArgs e) {
yourHandNo = Hand.GUU;
judge();
}
///<summary>チョキボタンクリック</summary>
private void btnChoki_Click(object sender, EventArgs e) {
yourHandNo = Hand.CHOKI;
judge();
}
///<summary>パーボタンクリック</summary>
private void btnPa_Click(object sender, EventArgs e) {
yourHandNo = Hand.PAA;
judge();
}
///<summary>ゲームスタートボタンクリック</summary>
private void btnGameStart_Click(object sender, EventArgs e) {
StartGame();
}
///<summary>リプレイボタンクリック</summary>
private void btnReplay_Click(object sender, EventArgs e) {
StartGame();
}
/*------------------------------
* クラス内メソッド
------------------------------*/
///<summary>ゲームスタート時のボタン表示制御</summary>
private void resetBtn() {
// ゲームスタートボタンを表示
btnGameStart.Visible = true;
// 各手のボタンを非表示
btnGu.Visible = false;
btnChoki.Visible = false;
btnPa.Visible = false;
// リプレイボタンを非表示
btnReplay.Visible = false;
// 初期メッセージ設定
message.Text = "5秒以内に手を決めないと負けです!";
}
///<summary>ゲーム開始処理</summary>
private void StartGame() {
// ボタンを隠す
btnGameStart.Visible = false;
btnReplay.Visible = false;
// 手のボタンを表示
btnGu.Visible = true;
btnChoki.Visible = true;
btnPa.Visible = true;
// ラベルのテキストを設定
message.Text = "ゲームスタート!";
winLoss.Text = "";
}
///<summary>じゃんけんの勝敗判定</summary>
///<remarks>勝敗がついたらリプレイボタンを表示</remarks>
private void judge() {
// PCの手を乱数で決める(下の式で手の数-1の値になる)
pcHandNo = rnd.Next(Hand.hands.Length);
// プレイヤーの手を取得
Hand yourHand = Hand.hands[yourHandNo];
// 勝敗を得て表示する
int result = yourHand.judge(pcHandNo);
showWinLoss(result);
// 勝敗による制御
if (Hand.DRAW != result) {
// タイマーストップ
btnReplay.Visible = true;
}
}
///<summary>勝敗表示</summary>
private void showWinLoss(int result) {
message.Text = $"あなたの手「{Hand.hands[yourHandNo]}」 私の手「{Hand.hands[pcHandNo]}」";
winLoss.Text = RESULT_MSG[result];
}
/**************************
* スタティックメンバー
**************************/
///<summary>プレーヤーの手</summary>
private static int yourHandNo = 0;
///<summary>PCの手</summary>
private static int pcHandNo = 0;
///<summary>乱数取得用インスタンス</summary>
private static readonly Random rnd = new Random();
///<summary>勝敗を知らせるメッセージ</summary>
private static readonly string[] RESULT_MSG = new string[] {
"あなたの勝ちです!",
"わたしの勝ちです",
"あいこです",
"ゲームが中断されました"
};
}



<まとめ:隣の人に正しく説明できたらチェックを付けましょう>