C # Игра в кости с использованием метода броска костей - PullRequest
0 голосов
/ 03 октября 2018

Код ниже для игры в кости.Я не уверен, что логика кода верна.Я хочу проверить это, но когда я запускаю этот код, ничего не выводится.Он компилируется и отображается пустой экран без вывода.Я не могу понять, почему ничего не отображается.Кроме того, любые советы по логике кода будут оценены.У меня возникли проблемы с тем, как выполнить процесс переброса, когда 2, 3, 7, 11 или 12 изначально не выпали.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ”*” * * * * * * * * * * * * * * * * * * * * * * '* ”. За те 2, которые не знакомы с игрой: бросают 2 кубика, а бросок 7 или 11 - победа.2, 3 или 12 - потеря.Любое другое число становится «точкой», и игрок перебрасывается до тех пор, пока не наберется точка или 7.Соответствие точке - это победа.На этот раз 7 - потеря.

class Craps
{
    const int dieSides = 6;

    int roll;
    //const int repeatGame = 1000;

    Random random = new Random();

    public void RollDice()
    {
        int die1 = 0;
        int die2 = 0;

        die1 = random.Next(6) + 1;

        die2 = random.Next(6) + 1;

        roll = die1 + die2;
        Console.WriteLine("The shooter roled: {0}", roll);
    }

    public void PlayCraps()
    {
        RollDice();
        int gameStatus = 0;
        int point = roll;
        int numRolls = 1;

        while (gameStatus < 1)
        {


            if (roll == 7 || roll == 11)
            {
                Console.WriteLine("You won!");
                break;
            }
            else if (roll == 2 || roll == 3 || roll == 12)
            {
                Console.WriteLine("You lost.");
                break;
            }
            else
            {

                RollDice();
                Console.WriteLine("The point is: {0}", point);

                while (point != roll || roll != 7)
                {
                    if (roll == point)
                    {
                        Console.WriteLine("You won!");
                        numRolls++;
                        gameStatus++;
                    }

                    if (roll == 7)
                    {
                        Console.WriteLine("You lost");
                        numRolls++;
                        gameStatus++;
                    }
                    RollDice();
                    numRolls++;

                }

            }
        }
    }



    static void Main(string[] args)
    {
        Craps NewGame = new Craps();
        Console.ReadLine();
    }
}
}

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

В вашей функции Main вы создаете объект Craps, но никогда ничего с ним не делаете.

Если вы вызываете Craps.PlayCraps(), это фактически заставит его делать что-то другоечем создать объект, а затем ждать ввода пользователя.

0 голосов
/ 03 октября 2018

В качестве альтернативы другим предложениям, которые вы в своем Main() вызываете своим PlayCraps() методом для своего нового NewGame объекта, например:

 Craps NewGame = New Craps();
 NewGame.PlayCraps();

Вы можете вместо вызовите метод PlayCraps() в конструкторе Craps:

class Craps
{
    const int dieSides = 6;

    int roll;
    //const int repeatGame = 1000;

    Random random = new Random();

    //start the game in the constructor:
    public Craps()
    {
       this.PlayCraps();
    }


    public void RollDice()
    {
        int die1 = 0;
        int die2 = 0;

        die1 = random.Next(6) + 1;

        die2 = random.Next(6) + 1;

        roll = die1 + die2;
        Console.WriteLine("The shooter roled: {0}", roll);
    }

    public void PlayCraps()
    {
        RollDice();
        int gameStatus = 0;
        int point = roll;
        int numRolls = 1;

        while (gameStatus < 1)
        {


            if (roll == 7 || roll == 11)
            {
                Console.WriteLine("You won!");
                break;
            }
            else if (roll == 2 || roll == 3 || roll == 12)
            {
                Console.WriteLine("You lost.");
                break;
            }
            else
            {

                RollDice();
                Console.WriteLine("The point is: {0}", point);

                while (point != roll || roll != 7)
                {
                    if (roll == point)
                    {
                        Console.WriteLine("You won!");
                        numRolls++;
                        gameStatus++;
                    }

                    if (roll == 7)
                    {
                        Console.WriteLine("You lost");
                        numRolls++;
                        gameStatus++;
                    }
                    RollDice();
                    numRolls++;

                }

            }
        }
    }



    static void Main(string[] args)
    {
        Craps NewGame = new Craps();
        Console.ReadLine();
    }
}

Теперь, когда вы инициализируете свой объект NewGames Craps, метод PlayCraps() будет вызываться как часть этой инициализации, и игра будетНачните.Я думаю, что другой способ немного более понятен, и он позволит вам установить свойства Craps (если они когда-либо существуют) перед вызовом вашего метода PlayCraps(), но я чувствую, что использование конструктора здесь стоит упомянуть.

0 голосов
/ 03 октября 2018

Я могу ошибаться, но я верю в основной метод, вы должны вызывать метод, а не только класс.Пример:

static void Main(string[] args)
{
    Craps NewGame = new Craps();
    NewGame.PlayCraps();
    Console.ReadLine();
}

}}

...