Python 3 нужна помощь в школьном проекте
Итак, я сейчас учусь на курсе по программированию в старшей школе и создаю программу игры, которую учитель назначил для всех нас. Игра называется "игра на палках" (если вы хотите лучше узнать, как работает игра, пропустите примерно половину этого видео https://www.youtube.com/watch?v=dUXW3Kh_kxo&t=280s). В основном у нас есть 15 палочек на столе, и вы можете забрать 1, 2 или 3 палки. У меня есть код, который работает для игры, но он говорит, что я делаю нелегальный ход за 5 палок, оставшихся в любой игре. Я не могу найти проблему и надеялся, что кто-то еще мог.
pl1 = input("Player 1, what is your username?") #player 1
pl2 = input("Player 2, what is your username?") #player 2
turnsa = 0 #player1 turns
turnsb = 0 #player2 turns
x = 15 #number of sticks
whichplayer = 1
while(x != 1):
while(whichplayer == 1):
P1 = int(input(pl1 + ', choose an amount of sticks from 1-3 ' + str(x) +
' sticks remaining'))
if P1 < x and P1 < 4: # check for legal move
x = x - P1
turnsa = turnsa + 1
whichplayer = 2 #ending loop to start player 2 turn
if P1 > 3 or P1 > x: #check for illegal move
print('illegal move')
continue #restarting player 1 loop
while(whichplayer == 2):
P2 = int(input(pl2 + ', choose an amount of sticks from 1-3 ' + str(x) +
' sticks remaining'))
if P2 < x and P2 < 4:
x = x - P2
turnsb = turnsb + 1
whichplayer = 1
if P2 > 3 or P2 > x:
print('illegal move')
continue
if turnsa > turnsb:
print('congrats ' + pl1 + ' you win')
if turnsb > turnsa:
print('congrats ' + pl2 + ' you win')
1 ответ
Вы уменьшаете x
во-первых if
Скажите, тогда, когда второй if
проверки P1 > x
это правда, потому что вы установили x
от 5
в 2
и P1
является 3
, Вы можете просто использовать if/else
здесь, поскольку если ход недействителен, вы уже знаете, что это будет недопустимый ход. Также у вас есть некоторые крайние случаи, которые нужно проверить с вашим >
, <
, а также !=
сравнения (попробуйте брать 3 палки за ход и посмотреть, что получится). Я оставлю все остальное для работы, так как это школьная работа, и это будет хорошим опытом обучения. Отредактирую позже, если потребуется помощь.
if P1 < x and P1 < 4: # check for legal move
x = x - P1 # <========= decrementing here then checking it in the next if
turnsa = turnsa + 1
whichplayer = 2 #ending loop to start player 2 turn
if P1 > 3 or P1 > x: #check for illegal move
print('illegal move')
continue #restarting player 1 loop