我正在编写一个基本战舰游戏的脚本。我是python的新手,希望您能给我一些指导,告诉我哪里出了问题。我想所有的代码都在那里,需要任何帮助将不胜感激谢谢!你知道吗
def main():
from random import randint
#initializing board
board = []
for x in range(5):
board.append(["o"] * 5)
def print_board(board):
for row in board:
print( " ".join(row))
#starting the game and printing the board
print ("Let's play Battleship!")
print_board(board)
#defining where the ship is
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
#asking the user for a guess
for turn in range(4):
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
# if the user's right, the game ends
if guess_row == ship_row and guess_col == ship_col:
print ("Congratulations! You sunk my battleship!")
break
else:
#warning if the guess is out of the board
if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
print ("Oops, that's not even in the ocean.")
#warning if the guess was already made
elif(board[guess_row][guess_col] == "X"):
print ("You guessed that one already.")
#if the guess is wrong, mark the point with an X and start again
else:
print ("You missed my battleship!")
board[guess_row][guess_col] = "X"
# Print turn and board again here
print ( "Turn " + str(turn+1) + " out of 4.")
print_board(board)
#if the user have made 4 tries, it's game over
if turn >= 10:
print ("Game Over")
if __name__ == '__main__':
main()
首先,您的代码不会这样运行,因为缩进被破坏了。在Python中,缩进不仅仅是使程序更具可读性的好样式,它还告诉计算机程序的结构。在修复了缩进后,我尝试了你的程序,它按预期工作。不过,“Game Over”消息不会被打印,因为在打印时,变量
turn
包含最后分配给它的值3
,而不是10
。你知道吗对代码的一些随机想法:
board
在定义random_row
和random_col
的范围内可见,因此不需要将其作为参数传递。你知道吗电路板大小和匝数硬编码两次;在后一种情况下,您(可能是错误地)使用了不同的数字。您可以通过为这些值定义常量(具有大写名称的变量,不能更改)并在以后使用它们来提高代码的可读性:
在
break
之后,您不需要else
,因为循环仍然保留。elif
的括号。你知道吗相关问题 更多 >
编程相关推荐