c#游戏策划者不允许多次猜测数字

本文关键字:数字 游戏 策划者 不允许 | 更新日期: 2023-09-27 18:03:27

我想让用户播放所有剩余的尝试,但它告诉有一个错误在第176行:

if(PCArray[i] == userArray[i])

我想是因为第45行的attempts

int hits = CountHits(PCArray, userArray, attempts);

为什么给我一个错误?如果我在第45行使用digitNumber而不是attempts,但我希望它一直播放到尝试次数

static void Main(string[] args)
{
    string name;
    Console.WriteLine("**************Let's play Master-Mined**************");
    Console.WriteLine();
    Console.Write("Please enter your name: ");
    name = Console.ReadLine();
    Console.WriteLine("Welcome {0}. Have fun!! ", name);
    int numberCount = 0;
    int difficultyLevel = 0;
    int digitNumber = GetRandomNumberCount(numberCount);
    Console.Write(digitNumber + " it is. Let's play.");
    Console.WriteLine();
    int[] PCArray = GenerateRandomNumbers(digitNumber);
    Console.WriteLine("A " + digitNumber + "-digit number has been chosen. Each possible digit may be the number 1, 2, 3 or 4.");
    Console.WriteLine("    ******");
    int difficulty = GetGameDifficulty(difficultyLevel);
    int attempts = difficulty * digitNumber;
    Console.WriteLine("Enter your guess ({0} guesses remaining)", attempts);
    for (int i = 0; i < attempts; i++)
    {
        int[] userArray = GetUserGuess(digitNumber);
        int hits = CountHits(PCArray, userArray, attempts);
        attempts = attempts - 1;
        Console.WriteLine("Enter your guess ({0} guesses remaining)", attempts);
    }
    Console.ReadLine();
}
public static int GetRandomNumberCount(int numberCount)
{
    int number = 0;
    do
    {
        try
        {
            Console.Write("How many numbers would you like to use in playing the game (4-10)? ");
            number = int.Parse(Console.ReadLine());
            Console.WriteLine();
        }
        catch
        {
            Console.WriteLine("You must pick a number between 4 and 10. Choose again.");
            Console.WriteLine();
        }
    } while ((number < 4) || (number > 10));
    return number;
}
public static int GetGameDifficulty(int difficultyLevel)
{
    int difficulty = 0;
    do
    {
        try
        {
            Console.Write("Choose a difficulty level (1=hard, 2=medium, 3=easy): ");
            difficulty = int.Parse(Console.ReadLine());
        }
        catch
        {
            Console.WriteLine("         Incorrect entry: Please re-enter.");
        }
    } while ((difficulty < 1) || (difficulty > 3));
    return difficulty;
}
public static int[] GenerateRandomNumbers(int PCSize)
{
    int eachNumber;
    int[] randomNumber = new int[PCSize];
    Random rnd = new Random();
    for (int i = 0; i < randomNumber.Length; i++)
    {
        eachNumber = rnd.Next(1, 5);
        randomNumber[i] = eachNumber;
        Console.Write(eachNumber);
    }
    Console.WriteLine();
    return randomNumber;
}
public static int[] GetUserGuess(int userSize)
{
    int number = 0;     
    int[] userGuess = new int[userSize];     
    for (int i = 0; i < userGuess.Length; i++)     
    {     
        Console.Write("Digit {0}: ", (i + 1));     
        number = int.Parse(Console.ReadLine());     
        userGuess[i] = number;     
        //Console.Write(number);     
    }     
    Console.WriteLine();     
    Console.Write("Your guess: ");     
    for (int i = 0; i < userGuess.Length; i++)     
    {     
        Console.Write(userGuess[i] + " ");     
    }     
    Console.WriteLine();     
    return userGuess;     
}     
public static int CountHits(int[] PCArray, int[] userArray, int attempts)     
{     
    int hit = 0;     
    int miss = 0;     
    int hits = 0;     
    for (int i = 0; i < attempts; i++)     
    {     
        if(PCArray[i] == userArray[i])     
        {     
            hit = hit + 1;     
            hits = hit;     
        }     
        else     
        {     
            miss = miss + 1; // count - hit;     
        }     
    }     
    Console.WriteLine("Results: {0} Hit(s), {1} Miss(es)", hit, miss);     
    return hits;     
}

c#游戏策划者不允许多次猜测数字

很好。谢谢你,杰斯特。我添加了"remaining = attempts",并对countHits方法进行了以下更改:

public static int CountHits(int[] PCArray, int[] userArray, int attempts)    
        {    
            int hit = 0;    
            int miss = 0;     
            int hits = 0;    
                for (int j = 0; j < PCArray.Length; j++)
                {
                    if (PCArray[j] == userArray[j])
                    {
                        hit = hit + 1;
                        hits = hit;
                    }
                    else
                    {
                        miss = miss + 1;    
                    }
                }
            Console.WriteLine("Results: {0} Hit(s), {1} Miss(es)", hit, miss);
            return hits;

我只需要一个for循环,并将"attempts"更改为"PCArray"。长度"在我的for循环中。现在,它会计算正确的命中和未命中次数,并倒数到0次剩余猜测。谢谢。