Как я мог бы протестировать приведенный ниже код, чтобы увидеть, как будет функционировать тай-брейк?

#python

#python

Вопрос:

Как вы можете видеть, я полный новичок в Python, поэтому буду признателен за любую помощь. Моя проблема в том, что я пытаюсь протестировать код для всех сценариев, но я не могу протестировать тай-брейк. Конечно, я мог бы просто вставить Player1Score = Player2Score (который я пометил хэшем, чтобы показать местоположение), но это просто отправило бы программу в бесконечный цикл, что противоречит цели тай-брейка. Итак, есть ли какой-либо способ, которым я могу заставить программу пройти сегмент тай-брейка только один раз, а затем позволить одному игроку выиграть?

(Прошу прощения, если я допустил какие-либо ошибки в своем вопросе, я также новичок в stackoverflow)

 
import random

def DiceGame():
  Count = 0
  Player1Score = 0
  Player2Score = 0
  while Count <= 4:
    Count  = 1
    print ("n It is Round",Count, "n")
    print ("It is Player 1's turn.")
    x = input("Press [Enter] to roll.")
    Score = Rolls()
    Player1Score  = Score
    print ("Player 1, your score so far is",Player1Score)
    print ("It is Player 2's turn.")
    x = input("Press [Enter] to roll.")
    Score = Rolls()
    Player2Score  = Score
    print ("Player 2, your score so far is",Player2Score)
  #Player1Score = Player2Score
  if Player1Score == Player2Score:
    print ("It is a tie!")
    print ("There will be a final tiebreaker.")
    Count -= 1
    DiceGame()
  elif Player1Score >= Player2Score:
    print ("Player 1 wins!")
  elif Player1Score <= Player2Score:
    print ("Player 2 wins!")


def Rolls():
  Roll1 = random.randint(1,6)
  Roll2 = random.randint(1,6)
  print ("You got a",Roll1)
  print ("You got a",Roll2)
  Score1 = Roll1   Roll2
  if Score1 == 2 or Score1 == 4 or Score1 == 6 or Score1 == 8 or Score1 == 10 or Score1 == 12:
    print ("Your total is even so you get an extra 10 pts.")
    Score2 = Score1   10
    print ("Your score for this round is" ,Score2)
  elif Score1 == 3 or Score1 == 5 or Score1 == 7 or Score1 == 9 or Score1 == 11:
    print ("Your total is odd so you lose 5 pts.")
    Score2 = Score1 - 5
    if Score2 <= 0:
      print ("Your score has gone below 0pts. It will therefore be reset to 0pts")
      Score2 = 0
    print ("Your score for this round is" ,Score2)
  
  return Score2

DiceGame()
  

Ответ №1:

Если вы действительно хотите, вы можете добавить временные оценки игроков для тестирования функции, а затем снова удалить их, если увидите, что они работают. Обычно его запуска было бы достаточно, но, как вы упомянули, он будет зацикливаться вечно. Я думаю, это как бы показывает, что это работает, но я согласен, что это не оптимально.

 def DiceGame(count, p1, p2):
  Count = count
  Player1Score = p1
  Player2Score = p2
  ...
  

Затем в нижней части вашего файла назовите его as DiceGame(5, 1, 1) , а в вашем тай-брейке назовите его as DiceGame(0, 0, 0) . Это приведет к ничьей при первом запуске и будет выполняться нормально во второй раз.

 if Player1Score == Player2Score:
    print ("It is a tie!")
    print ("There will be a final tiebreaker.")
    Count -= 1
    DiceGame(0, 0, 0)

... #  code inbetween

#  end of file
    return score2

DiceGame(5, 1, 1)
  

Комментарии:

1. Спасибо! Я мало что сделал для вызова функций с указанными переменными, поэтому я не думал использовать его для перехода к раунду 5.

2. @Shirotama Нет проблем, но если это решит вашу проблему, вы должны пометить ее как правильный ответ 🙂