c # консольный кубик - PullRequest
       4

c # консольный кубик

0 голосов
/ 10 марта 2011

У меня проблемы с программой. Мне нужно сравнить количество комбинаций, если они одинаковые, побеждает более высокое значение. Иначе, если количество комбинаций одинаково и значение одинаково, это ничья. вот что у меня так далеко.

        int[] player1 = new int[6];
        int[] player2 = new int[6];

        Random rndGen = new Random();

        for (int i = 0; i < 5; i++)
        {
            int diceRoll = 0;

            diceRoll = rndGen.Next(6);
            player1[diceRoll]++;
            Console.WriteLine("Computer rolled: {0}", diceRoll + 1);

        }//end for

        for (int i = 0; i < 5; i++)
        {
            int diceRoll = 0;
            diceRoll = rndGen.Next(6);
            player2[diceRoll]++;
            Console.WriteLine("You rolled: {0}", diceRoll + 1);

        }//end for

        int maxPlayer1 = 0, maxPlayer2 = 0;
        for (int i = 1; i < 5; i++)
        {
            if (player1[i] > player1[maxPlayer1]) maxPlayer1 = i;
            if (player2[i] > player2[maxPlayer2]) maxPlayer2 = i;
        }//end for

        if (player1[maxPlayer1] > player2[maxPlayer2])
            Console.WriteLine("Computer won with {0} of a kind", player1[maxPlayer1], maxPlayer1 + 1);
        else
            if (player2[maxPlayer2] > player1[maxPlayer1])
                Console.WriteLine("You won with {0} of a kind", player2[maxPlayer2], maxPlayer2 + 1);
            else
                Console.WriteLine("Tie");

    }//end main
}

}

Ответы [ 3 ]

1 голос
/ 10 марта 2011

Сразу вот несколько вещей, которые вы должны проверить:

for (int i = 1; i < 5; i++)

Этот цикл будет выполняться 4 раза, где i = 1, 2, 3, 4. Это почти наверняка не то, что вы пытались сделать.

Массивы индексируются нулем. Это означает, что первое значение имеет индекс 0, второе - индекс 1 и т. Д. Для массива длиной 6 последнее значение будет иметь индекс 5.

При использовании отформатированных строк первым параметром является формат, а затем все остальные параметры обозначаются числом, начиная с 0. Итак, для этой строки:

Console.WriteLine("You won with {0} of a kind", player2[maxPlayer2], maxPlayer2 + 1);

параметр maxPlayer2 + 1 никогда не используется.

1 голос
/ 10 марта 2011

Действительно ли player1[diceRoll]++ то, что вы хотите сделать?

0 голосов
/ 10 марта 2011

Я думаю, у вас есть ошибка в третьем цикле for:

 int maxPlayer1 = 0, maxPlayer2 = 0;
 for (int i = 1; i < 5; i++)
 {
    if (player1[i] > player1[maxPlayer1]) maxPlayer1 = i;
    if (player2[i] > player2[maxPlayer2]) maxPlayer2 = i;
 }//end for

Должно быть:

 int maxPlayer1 = 0, maxPlayer2 = 0;
 for (int i = 0; i < 6; i++)
 {
    if (player1[i] > player1[maxPlayer1]) maxPlayer1 = i;
    if (player2[i] > player2[maxPlayer2]) maxPlayer2 = i;
 }//end for
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...