Вход в кости для 2 игроков - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть код, который бросает две кости, для каждого игрока, где они набирают «бросить», чтобы бросить каждую из них.Однако, если они не вводят «roll» правильно, код не работает должным образом, и вместо того, чтобы снова и снова просить пользователя вводить «roll» снова / правильно, он проходит через код независимо от проверки его ввода..

Код должен попросить Игрока 1 бросить свои первые, а затем и вторые кубики в Раунде 1, затем перейти к двум кубикам Игрока 2 в первом раунде, а затем в Раунд 2, пока оба игрока не пройдут 5 раундов,и если они вводят его неправильно, он просто запрашивает правильный ввод, пока он не станет правильным.

import random
tot1 = 0
tot2 = 0
tot2 = 0
rnd2 = 0

for i in range (1,6):
while True:
from random import randint
    print()
    print("Player 1")
    ro1_1 = input("Type 'roll' to roll your 1st dice: ")
    if ro1_1 == 'roll':
        dice1_1 = (randint(1,6))
        print("Player1 dice 1:", dice1_1)
    else:
        ro1_1 = input("Type 'roll' to roll your 1st dice: ")
    ro1_2 = input("Type 'roll' to roll your 2nd dice: ")
    if ro1_2 == "roll":
        dice1_2 = (randint(1,6))
        print("Player1 Dice 2:", dice1_2)
    else:
        ro1_2 = input("Type 'roll' to roll your 1st dice: ")
    print()
    print ("Player1's total for round",(rnd1)," is:",tot1) 
    print()
    print ("Player 2")
    ro2_1 = input("Type 'roll' to roll your 1st dice: ")
    if ro2_1 == 'roll':
        dice2_1 = (randint(1,6))
        print("Player2 Dice 1:", dice2_1)
    else:
        ro1_1 = input("Type 'roll' to roll your 1st dice: ")
    ro2_2 = input("Type 'roll' to roll your 2nd dice: ")
    if ro2_2 == 'roll':
        dice2_2 = (randint(1,6))
        print("Player2 Dice 2:", dice2_2)
    else:
        ro2_2 = input("Type 'roll' to roll your 1st dice: ")
        break
    print()

print ("Player2's total for round",(rnd2)," is:",tot2)
    print()
    break

1 Ответ

0 голосов
/ 17 мая 2019

Сначала переместите from random import randint наверх - по крайней мере, вне цикла while.Это не решит проблему, а просто скажет.

Далее, вы хотите, чтобы что-то остановилось, пока игрок не наберет «бросок».В нескольких местах.

Напишите функцию:

def wait_for_right_input():
    while True:
        if input("Type 'roll' to roll your 1st dice: ") == 'roll':
            break

Теперь вы можете вызывать ее там, где это необходимо:

from random import randint

for i in range (1,6):
#while True: ## not sure why you have both, and this would make the indents wrong
    print()
    print("Player 1")

    wait_for_right_input() #<-- here
    dice1_1 = randint(1,6)
    print("Player1 dice 1:", dice1_1)

    wait_for_right_input() #<-- here
    dice1_2 = randint(1,6)
    print("Player1 Dice 2:", dice1_2)

    # etc

Если вы хотите выполнить цикл до недопустимого ввода (Iпредполагая причину while True и break), вы можете изменить функцию, чтобы она возвращала логическое значение, указывающее, продолжать или нет.

...