C # игра в кости - PullRequest
       14

C # игра в кости

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

Я видел вопросы, связанные с крэпсом, но они были связаны с питоном и Java.Я надеюсь, что кто-то знакомый с C # может мне помочь.Код ниже предназначен для имитации игры в кости.Код в основном работает, за исключением одного вопроса.

Полагаю, мне следует кратко объяснить игру.Две 6-ти сторонние кости брошены.Если результат 7 или 11. Игрок или «стрелок» выигрывает автоматически.Если выпало 2, 3 или 12, стрелок проигрывает автоматически.Однако, если выпало другое число, это число становится «точкой».Стрелок снова катится до тех пор, пока либо он не перевернет точку снова, либо 7. Если точка перемещена, стрелок побеждает.Если выпало 7, на этот раз это проигрыш.

Итак, проблема в том, что этот код по-прежнему автоматически дает выигрыши или проигрыши в течение 2, 3, 11 и 12 после первого броска.Например: стрелок бросает 6. 6 становится точкой, и стрелок снова катится.Если стрелок выбрасывает 3, этот код помечает этот результат как потерю, когда он должен просто продолжать катиться, пока не выпадет 6 или 7.Этот неправильный конец происходит всякий раз, когда после первого броска выпадают 2, 3, 11 или 12.Любая помощь по исправлению логики этого кода будет принята с благодарностью.Спасибо Также, я надеюсь, что этот вопрос отформатирован правильно.Пожалуйста, дайте мне знать, если это не так.

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(1, 7);

        die2 = random.Next(1, 7);

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

    public void PlayCraps()
    {
        RollDice();
        Console.WriteLine("The shooter roled: {0}", roll);

        int gameStatus = 0;
        int point = roll;
        int numRolls = 1;
        if (roll != 7 || roll != 11 || roll != 2 || roll != 3 || roll != 12)
        {
            Console.WriteLine("The point is: {0}", point);
        }
        while (gameStatus < 1)
        {


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

                while (point != roll || roll != 7)
                {
                    RollDice();

                    if (roll == point)
                    {
                        Console.WriteLine("The shooter roled: {0}", roll);
                        Console.WriteLine("You won!");
                        numRolls++;
                        gameStatus++;
                        break;
                    }

                    if (roll == 7)
                    {
                        Console.WriteLine("The shooter roled: {0}", roll);
                        Console.WriteLine("You lost");
                        numRolls++;
                        gameStatus++;
                        break;
                    }
                    else
                    {
                        numRolls++;
                        Console.WriteLine("The shooter roled: {0}", roll);
                        break;
                    }

                }

            }

        }
        Console.WriteLine("This game was {0} roll(s)", numRolls);
    }



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

1 Ответ

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

Пользователь pm100 прокомментировал, сказав, что финальный break вернул код обратно во внешний цикл и это стало причиной ошибки.Удаление этого исправило проблему, описанную в моем вопросе.Могут быть и другие ошибки или способы улучшить этот код, но этот комментарий решил конкретную задачу этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...