キーボード入力を使用する単純なロックペーパーはさみゲームを作っています。私は、がんやはさみを書くよりもはさみなどのためにロック2をタイプ1にする方が良いことを認識しましたが、コンソールに1つではなく各プレイヤーが選んだものを最後に書き留めておきます、2,3。現在のコンテキストに名前が存在しません同じクラスでエラーが発生しました
番号を持っている文字列が正しいユーザー入力を取得するときに私は私だけでは取得するには、1つのクラスを使用して、しばらくの初めにRealChoice1
とRealChoice2
を初期化していますが、だから、別の文字列 は、岩の紙やscissors.Howeverなりあなたは彼らがあなたのコードの範囲でどこでも利用できるようにしたい場合はwhile
ループの外で、あなたの変数を宣言する必要があり、それらの両方
while (true)
{
string RealChoice2;
string RealChoice1;
while (true)
{
var key1 = System.Console.ReadKey(true);
if (key1.Key == ConsoleKey.Enter)
break;
Choice1 += key1.KeyChar;
}
if (Choice1 == "exit")
return (int)ExitCode.UserInputExit;
else if (Choice1 != "1" && Choice1 != "2" && Choice1 != "3")
{
Choice1 = null;
Console.WriteLine("");
Console.WriteLine("Please write 1, 2 or 3");
}
else if (Choice1 == "1" || Choice1 == "2" || Choice1 == "3")
{
switch (Convert.ToInt32(Choice1))
{
case 1:
RealChoice1 = "Rock";
break;
case 2:
RealChoice1 = "Scissors";
break;
case 3:
RealChoice1 = "Paper";
break;
}
break;
}
} //End of player 1 input
string Choice2 = null;
Console.WriteLine("");
Console.WriteLine("Player2, please type what you choose");
//Player2Input:
while (true)
{
while (true)
{
var key2 = System.Console.ReadKey(true);
if (key2.Key == ConsoleKey.Enter)
break;
Choice2 += key2.KeyChar;
}
if (Choice2 == "exit")
return (int)ExitCode.UserInputExit;
else if (Choice2 != "1" && Choice2 != "2" && Choice2 != "3")
{
Choice2 = null;
Console.WriteLine("");
Console.WriteLine("Please write 1, 2 or 3");
}
else if (Choice2 == "1" || Choice2 == "2" || Choice2 == "3")
{
switch (Convert.ToInt32(Choice2))
{
case 1:
RealChoice2 = "Rock";
break;
case 2:
RealChoice2 = "Scissors";
break;
case 3:
RealChoice2 = "Paper";
break;
}
break;
}
}
関数を小さなものに分割し、異なるスコープの変数を再利用しません。 1つの長い関数で何が間違っているかを見つけることは非常に難しいです。 –