我正在尝试编写战舰游戏。我遵循了代码学院的课程,然后继续在那里写的游戏,但是我将事情分成了自己的模块并创建了类。一般来说,我对python和编程还是很陌生。我以前参加过CS课程,现在正在EDX上学习CS50x
在我的程序中,我声明了一个名为play_again的变量并将其设置为0。然后,我使用while语句以while play_again != 2:
来运行我的游戏
这本质上是我的游戏“主菜单”。
play_again = 0
while play_again != 2:
if play_again == 0:
print("Would you like to play a game of Battleship?")
print("Enter 1 to play")
print("Enter 2 to exit")
play_again = int(input("Make a selection: "))
if play_again == 1:
这个块是我遇到问题的地方,它嵌套在上面的if
块中,后面是一些其他代码,它们只是创建了游戏板和要寻找的飞船。
for turn in range(4):
print("Turn: ", turn + 1)
guess_row = int(input("Guess Row: ")) - 1 # the "-1"s here
compensate for our count starting at 0
guess_col = int(input("Guess Col: ")) - 1
#checks to see if the users guess is correct
if guess_row == ship_row and guess_col == ship_col:
print("Congratulations! You sank my battleship!")
play_again == 0
break
这个break语句确实有问题。我正在使用Pycharm,并且在调试器中变量play_again
从未设置为0。在“主菜单”中它始终为1,我一生都无法弄清为什么它没有改变。我觉得这很简单。我觉得这与作用域在python中的工作方式有关,但是变量是在与使用的作用相同的函数中创建的,因此我不确定为什么两者之间作用域会有所不同。进入循环时范围会改变吗?
谢谢您的帮助!
答案 0 :(得分:0)
您有play_again == 0
,也许您是想输入play_again = 0
。