• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#のループについて)

C#のループについて

このQ&Aのポイント
  • C#でジャンケンゲームの課題に取り組んでいるが、ループ処理やメソッドにエラーが出て修正方法が分からない。
  • ユーザは数字でグー、チョキ、パーを入力し、CPUは乱数で手を選ぶ。
  • 5回勝負し、勝敗がつくたびに結果を表示。指定された範囲以外の値を入力したら負け。

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.1

こんな感じでしょうか。 なるべく元のコードを保つようにしましたが、 こうした方がいいかな、これで十分かな、 と思うような部分は勝手に変更しています。 疑問があれば補足してください。 ---- using System; namespace ConsoleApp1 { static class Program { static string EnterName; static string Myhand; static int CntWin = 0; //勝利回数 static int CntLose = 0; //敗北回数 static int CntDraw = 0; //引分回数 //ユーザー名の入力 static void Main(string[] args) { Console.Write("ユーザ名を入力してください: "); EnterName = Console.ReadLine(); do { if (Check()) { Janken(); } } while (CntWin + CntLose < 5); Resurut(); } //じゃんけんを5回行います。 //for (int GameCnt = 0; GameCnt <= 5; GameCnt++) //{ //正しく入力されたかチェックを行うメソッド。 static bool Check() { //static = Console.ReadLine(); Console.Write("手を入力してください(グー1、チョキ2、パー3):"); Myhand = Console.ReadLine(); //正しく入力されたかチェックします。 //Check(ref Myhand); //0,1,2が入力された場合 if (Myhand.Equals("1") || Myhand.Equals("2") || Myhand.Equals("3")) { //入力した数字をそのまま返します。 return true; } //1,2,3以外が入力された場合 else { Console.WriteLine("LOSE(反則負け)"); CntLose++; //敗北回数に加算 return false; } } //じゃんけんを開始するメソッド。 //static void Start() //{ // //コンピューターとじゃんけんさせます。 // Janken(ref Myhand); // Console.ReadLine(); //} //コンピュータと自分の入力した手を判別するメソッド static void Janken() { int myhand = int.Parse(Myhand) - 1; // Random クラスの新しいインスタンスを生成する Random ran = new System.Random(); //コンピュータの出す手を1以上3以下に設定する。 //string[] com = new string[] { "1", "2", "3" }; int con = ran.Next(3); //配列型、変数teに出す名前を設定 string[] te = { "グー", "チョキ", "パー" }; //コンピュータが勝利した場合 if (((myhand == 0) && (con == 2)) || ((myhand == 1) && (con == 0)) || ((myhand == 2) && (con == 1))) { Console.WriteLine("あなた:" + te.GetValue(myhand)); Console.WriteLine("コンピュータ:" + te.GetValue(con)); Console.WriteLine("LOSE"); CntLose++; //敗北回数に加算 } //自分が勝利した場合 else if (((myhand == 0) && (con == 1)) || ((myhand == 1) && (con == 2)) || ((myhand == 2) && (con == 0))) { Console.WriteLine("あなた:" + te.GetValue(myhand)); Console.WriteLine("コンピュータ:" + te.GetValue(con)); Console.WriteLine("WIN"); CntWin++; //勝利回数に加算 } //あいこだった場合 else { Console.WriteLine("あなた:" + te.GetValue(myhand)); Console.WriteLine("コンピュータ:" + te.GetValue(con)); Console.WriteLine("DRAW"); CntDraw++; //引分回数に加算 } Console.WriteLine($"{EnterName}:{CntWin}勝、CPU:{CntLose}勝"); } static void Resurut() { if (CntWin > CntLose) { Console.WriteLine($"{EnterName}さんの総合勝利です"); } else if (CntLose > CntWin) { Console.WriteLine("CPUの総合勝利です"); } } } } ----

asai555666
質問者

お礼

ありがとうございました。

関連するQ&A