我正在尝试制作我自己的codecademy's Battleships版本。
到目前为止,这是我的代码。
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坐标?这是我感到困惑的地方。
答案 0 :(得分: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