Случайное число в конструкторе C#

Я студент, изучающий вводный курс программирования по разработке игр. Одно из моих заданий требует, чтобы я определил урон атаки игрока внутри конструктора. Я хочу, чтобы урон был случайным, но независимо от того, что я делаю, я получаю одно и то же число. Это тест, который я сделал, чтобы увидеть, как я могу сделать это число случайным.

class MainChar
{
    public static Random random = new Random();
    public int Atk;        

    public MainChar()
    {
        this.Atk = random.Next(11);
    }

    public void h()
    {
        while (Atk != 10)
        {
            Console.WriteLine(Atk);

        }
    }
}

Я создаю новый экземпляр MainChar в моей основной программе и запускаю h(). Я получаю повторяющийся список с тем же числом вместо случайных чисел от 1 до 10. Есть идеи?

PS Эта тема была полезна, но не смог ответить на мой вопрос.

2 ответа

Решение

В методе h(), while образует бесконечный цикл, если atk!=10, поэтому вам нужно указать условие выхода для разрыва цикла; Вы можете использовать так:

public void h()
{
    while (Atk != 10)
    {
        this.Atk = random.Next(11);                   
    }
    Console.WriteLine(Atk);
}

Теперь вы получите случайное число от 0 до 11 и не 10 в консоли

Если вы хотите продолжить работу со случайным числом, пока оно не сгенерирует условие или число разрыва, вы можете изменить функцию h() следующим образом:

public int Atk;
public static int max = 100;

public void h()
{
    while (Atk != 10)
    {
        this. Atk = random.Next(max);
        Console.WriteLine(Atk);
    }
}
Другие вопросы по тегам