забить проблему с игрой в кости двух игроков - PullRequest
0 голосов
/ 05 января 2019

Это игра для двух пользователей, которые бросают 2 кубика 5 раз. Если сумма костей четна, игрок получает 10 очков; если это странно, они теряют 5.

total_score2 = 0
total_score1 = 0
rounds = 0
playerOnePoints = 0
playerTwoPoints = 0

total_score2 = total_score2 + playerTwoPoints
total_score1 = total_score1 + playerOnePoints
rounds = rounds + 1
number = random.randint(1,6)
number2 = random.randint(1,6)
playerOnePoints = number + number2
print("-------------------------------------------")
print("Round",rounds)
print("-------------------------------------------")
print("Player 1's turn    Type 'roll' to roll the dice")
userOneInput = input(">>> ")
if userOneInput == "roll":
    time.sleep(0.5)
    print("Player 1's first roll is", number)
print("Player 1's second roll    Type 'roll' to roll the dice")
userOneInput = input(">>> ")
if userOneInput == "roll":
    time.sleep(0.5)
    print("player 1's second roll is", number2)
if playerOnePoints % 2 == 0:
    playerOnePoints = playerOnePoints + 10
    print("Player 1's total is even so + 10 points")
    print("-------------------------------------------")
    print("Player 1 has",playerOnePoints, "points")
else:
    playerOnePoints = playerOnePoints - 5
    print("player 1's total is odd so -5 points")
    print("-------------------------------------------")
    print("Player 1 has",playerOnePoints, "points")
number = random.randint(1,6)
number2 = random.randint(1,6)
playerTwoPoints = number + number2
print("-------------------------------------------")
print("Player 2's turn    Type 'roll' to roll the dice")
userTwoInput = input(">>> ")
if userTwoInput == "roll":
    time.sleep(0.5)
    print("Player 2's first roll is", number)
print("Player 2's second roll    Type 'roll' to roll the dice")
userTwoInput = input(">>> ")
if userTwoInput == "roll":
    time.sleep(0.5)
    print("player 2's second roll is", number2)
if playerTwoPoints % 2 == 0:
    playerTwoPoints = playerTwoPoints + 10
    print("Player 2's total is even so + 10 points")
    print("-------------------------------------------")
    print("Player 2 has",playerTwoPoints, "points")
else:
    playerTwoPoints = playerTwoPoints - 5
    print("player 2's total is odd so -5 points")
    print("-------------------------------------------")
    print("Player 2 has",playerTwoPoints, "points")

Дело в том, что неправильно то, что пользователь бросает 1 и 2, которые складывают до 3, что является нечетным числом, игра получит -5 из 3, что дает -2, но я этого не хочу чтобы перейти в минус, я хочу, чтобы, если они получают миус-очки, то говорят, что они получают 0 баллов вместо минус-баллов

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Альтернативой ответу PSM будет использование if операторов для простоты:

playerOnePoints = playerOnePoints - 5
if playerOnePoints < 0:
    playerOnePoints = 0

или меньше строк, может показаться не так просто:

# playerOnePoints = playerOnePoints - 5   # Delete this line and just use below
if playerOnePoints >= 5:
    playerOnePoints = playerOnePoints - 5
0 голосов
/ 05 января 2019

После вычитания очков у игрока вы можете использовать max ():

playerOnePoints = playerOnePoints - 5
playerOnePoints = max(0, playerOnePoints)

Это даст вам 0, если playerOnePoints отрицателен, или playerOnePoints, если положителен.

Также вы можете использовать abs (), чтобы сделать это.

def x(number):
    return (abs(number)+number)/2

x(-2) # This would return 0
x(2) # This would return 2
...