//这是一个简单的猜数字游戏C#代码,要求猜测的数字不重复,每次猜测后,如果有数字和位置都正确,则打印一个 "b";如果有数字正确但是位置不对,则打印一个 "w",直到玩家猜出正确答案才结束游戏。
//```csharp
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int[] answer = GenerateAnswer();
int[] guess = new int[4];
bool correct = false;
while (!correct)
{
Console.Write("猜4个不同的数字(1~9),请以空格分隔:");
guess = Console.ReadLine().Split().Select(int.Parse).ToArray();
if (!CheckValidGuess(guess))
{
Console.WriteLine("无效的猜测,请重新输入。");
continue;
}
string result = "";
int b = 0, w = 0;
for (int i = 0; i < 4; i++)
{
if (answer[i] == guess[i])
b++;
else if (answer.Contains(guess[i]))
w++;
}
if (b == 4)
{
correct = true;
result = "恭喜你,猜对了!";
}
else
{
result = $"结果是 {b}b {w}w 。";
}
Console.WriteLine(result);
}
Console.ReadKey();
}
static int[] GenerateAnswer()
{
Random rnd = new Random();
int[] arr = new int[4];
for (int i = 0; i < 4; i++)
{
int num = rnd.Next(1, 10);
while (arr.Contains(num))
{
num = rnd.Next(1, 10);
}
arr[i] = num;
}
return arr;
}
static bool CheckValidGuess(int[] arr)
{
if (arr.Length != 4)
return false;
for (int i = 0; i < 4; i++)
{
if (arr[i] < 1 || arr[i] > 9)
return false;
for (int j = i + 1; j < 4; j++)
{
if (arr[i] == arr[j])
return false;
}
}
return true;
}
}
//```
//这个程序利用 Random 类随机生成答案,然后每次从控制台中读取玩家输入,利用 CheckValidGuess 函数验证输入是否合法,
//若不合法则提示错误信息,重新读取输入;若合法,则通过遍历判断输入与答案中数字位置和数字是否相同,并输出结果,最后提示猜对的消息。