我正在尝试制作一个简单的游戏来练习自己在课堂上学到的东西。但是我无法解决正在做我不希望做的事情的while循环。
如果player_one_range_counter与一个地点(spot_1,spot_2,spot_3等)相同,则循环应为False,并且不可访问。如果player_two_range_counter与其中之一相同,则应该发生相同的事情。
如果两个点都相同,则表示它们各自的循环为False,游戏结束。
问题是,即使它们都与游戏继续进行的一个或多个位置相同。我不应该。
有人能启发我做错了什么。谢谢。
continue_game = True
while continue_game:
player_one_play = True
player_two_play = True
while player_one_play:
print(user_1_name)
x = steps_to_move() # returns int from steps_to_move()
player_one_range_counter += x # updates the range for palyer one
user_1_turtle.fd(x) # turtle move x amount of pixels forward
if player_one_range_counter == spot_1 or player_one_range_counter == spot_2 or player_one_range_counter == spot_3 or player_one_range_counter == spot_4 or player_one_range_counter == spot_5:
print("\n" + user_1_name, "stepped on a mine! \n")
player_one_play = False
else:
break
while player_two_play:
print(user_2_name)
y = steps_to_move()
player_two_range_counter += y
user_2_turtle.fd(y)
if player_two_range_counter == spot_1 or player_two_range_counter == spot_2 or player_two_range_counter == spot_3 or player_two_range_counter == spot_4 or player_two_range_counter == spot_5:
print("\n" + user_2_name, "stepped on a mine! \n")
player_two_play = False
else:
break
if player_one_play == False and player_two_play == False:
continue_game = False
我相信主要问题是这是内部 while
循环:
player_one_play = True
player_two_play = True
何时应该在[while
循环之前]。我如何处理您的代码逻辑:spots = [spot_1, spot_2, spot_3, spot_4, spot_5]
player_one_playing = True
player_two_playing = True
while True:
if player_one_playing:
print(user_1_name)
steps = steps_to_move() # returns int from steps_to_move()
user_1_turtle.fd(steps) # turtle move x amount of pixels forward
player_one_range_counter += steps # updates the range for player one
if player_one_range_counter in spots:
print("\n" + user_1_name, "stepped on a mine!\n")
player_one_playing = False
if player_two_playing:
print(user_2_name)
steps = steps_to_move()
user_2_turtle.fd(steps)
player_two_range_counter += steps
if player_two_range_counter in spots:
print("\n" + user_2_name, "stepped on a mine! \n")
player_two_playing = False
if not (player_one_playing or player_two_playing):
break
原始代码中的内部while
循环实际上是if
语句,因此我在我的代码中已将它们做成这样。