проблемы с игрой в кости - PullRequest
0 голосов
/ 02 марта 2020

Цель кода - заставить двух игроков бросить пару костей. Первый игрок, бросивший в общей сложности 20, выигрывает игру. У меня проблемы с выяснением, как правильно отслеживать сумму бросков; он дает мне только сумму текущего хода, а затем игра заканчивается, когда каждый игрок выпадет 10 раз.

Как правильно подсчитать сумму игры каждого игрока, а затем остановить l oop, когда одна из сумм игроков равна 20?

int a, b, c, d;
int playerone=0, playertwo=0;

Random gen = new Random();
a=gen.nextInt(6)+1;
b=gen.nextInt(6)+1;
c=gen.nextInt(6)+1;
d=gen.nextInt(6)+1;

while(playerone!=20 || playertwo!=20) {
    playerone=a+b;
    playertwo=c+d;

    System.out.println("Player 1 rolled " + a + " and a " + b );
    System.out.println("Player 1 now has " + playerone);
    System.out.println("Player 2 rolled " + c + " and a " + d );
    System.out.println("Player 2 now has " + playertwo);

    a=gen.nextInt(6)+1;
    b=gen.nextInt(6)+1;
    c=gen.nextInt(6)+1;
    d=gen.nextInt(6)+1;

    playertwo+=a+b;

    playerone+=c+d;
    if(playerone==20) 
        System.out.println("player one wins ");
    else if (playertwo==20)
        System.out.println("player two wins ");             
    }       
}

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

, пожалуйста, посмотрите и сравните его с вашим фрагментом:

int playerone = 0, playertwo = 0;
while(playerone < 20 && playertwo < 20) {
    a=gen.nextInt(6)+1;
    b=gen.nextInt(6)+1;
    c=gen.nextInt(6)+1;
    d=gen.nextInt(6)+1;

    System.out.println("Player 1 rolled " + a + " and a " + b );
    System.out.println("Player 1 now has " + playerone);
    System.out.println("Player 2 rolled " + c + " and a " + d );
    System.out.println("Player 2 now has " + playertwo);

    playerone+=a+b;
    playertwo+=c+d;
    }

    if(playerone >= playertwo) { // here you have to choose how
        System.out.println("player one wins with " + playerone + " over " + playertwo);
    } else {
    System.out.println("player two wins with " + playertwo + " over " + playerone);
}

В приведенном выше коде я исправил несколько вещей: условия where и a / b для игрока 1 и c / d для игрок 2. После того, как где l oop заканчивается, вы должны решить, в зависимости от полученных значений или от вашего логика c, как определить победителя, так как оба бросают кубики.

2 голосов
/ 02 марта 2020

Вы устанавливаете playerone=a+b и playertwo=c+d внутри l oop, что означает, что итоги основаны только на последних бросках. Сделайте это до l oop, вместо этого.

Хотя, действительно, было бы лучше объединить все броски костей и вывести их в l oop, чтобы вы могли вывести новые итоги после того, как они обновляются, а не раньше.

Вы также не согласны с тем, * a и b для игрока один или два. Вы должны переместить весь код для обновления игроков и бросать кости в методы.

...