Codecademy 战舰游戏 Python
我正在尝试制作一个自己的版本的Codecademy的“战舰”游戏。
这是我目前的代码:
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
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)
running = True
while running:
print_board(board)
guess_row = int(raw_input("Guess Row:")) - 1 #-1 in order to make rows numbered from 1 to 5 for the user
guess_col = int(raw_input("Guess Col:")) - 1 #-1 in order to make cols numbered from 1 to 5 for the user
if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
print "Error: index out of bounds"
elif guess_row == ship_row and guess_col == ship_col:
print "Congratulations! You sank my battleship!"
running = False
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"`
程序运行得很好。我想要做的是创建多个不同长度的战舰,并且有两个不同的棋盘,这样两个玩家可以互相猜测对方的战舰。不过我们先一步一步来。
如果我想要有多个长度为2或3的战舰,怎么表示这些战舰比较好呢?我的想法是用一个列表来表示战舰在棋盘上占据的坐标,因为每个点都有一个x坐标和一个y坐标。那么,一个长度为3的战舰是不是应该是一个长度为3的列表,里面包含3个长度为2的列表,每个列表都有一个x和y坐标呢?这让我有点困惑。
1 个回答
0
在战舰游戏中,每个玩家有两个棋盘:一个用来放自己的船,另一个用来记录对敌人的攻击。
为了存放船只,你可以简单地在一个整数网格中放入一个代码数字:
0 1 1 1 1 0
0 2 0 0 0 0
0 2 0 0 0 0
0 2 0 3 3 0
0 0 0 0 0 0