Codecademy Battleships Python

时间:2014-04-01 13:42:42

标签: python

我正在尝试制作我自己的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坐标?这是我感到困惑的地方。

1 个答案:

答案 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