Python中的战列舰游戏 - 随机发货

时间:2017-07-28 21:51:48

标签: list python-3.x random

我目前正在Python中创建游戏战舰,玩家可以在这里与计算机对战。我已经设法为他们两个创建了板,并为玩家的棋盘放置了船只。但是我一直在使用random.randint为计算机板随机放置船只。

我在输出中遇到此错误:文件“python”,第98行,在comp_place_ships中 TypeError:'function'对象不可订阅

以下是代码:

#Computer place ships
def comp_place_ships(comp_board, ships):
   for i, j in ships.items():
     ship_not_placed = True
     while ship_not_placed:
       ori = random.randint(0,1)
       x = random.randint(0,9)
       y = random.randint(0,9)
       placement = comp_board[x][y]
       if ori == 0 and placement == '.':
         for k in range(j):
            comp_board[x][y] = i
            comp_board[x+k][y] = i
            ship_not_placed = False

       elif ori == 1 and placement == '.':
         for k in range(j):
           comp_board[x][y] = i
           comp_board[x][y+k] = i 
           ship_not_placed = False

       elif ori != 0 or 1 and placement != '.':
         print('Invalid choice, please try again.')
comp_place_ships(comp_board, ships)

我知道“placement = comp_board [x] [y]”部分是制作错误代码的部分,但不知道如何解决它。我使用变量放置来检查坐标是否等于'。'这是二维列表中每个单元格的标准值。那里有人可能对如何解决这个问题有任何建议吗?

PS!我知道代码结构很差,如果条件如下如何不与船舶放置一起下线,我就没有添加其他代码。当我解决这个问题时会添加这个问题=)

已编辑!:为comp_place_ships函数添加了函数调用,并使您更容易看到输出,这是我的repl.it代码:https://repl.it/J41A/10

1 个答案:

答案 0 :(得分:0)

您正在传递函数comp_board,而不是实例。

为了帮助您了解正在发生的事情,请在该行放置一个断点,然后检查变量以查看其外观。