2017-07-28 138 views
0

我目前在Python創建遊戲的戰艦,其中一個玩家扮演防禦計算機。我設法爲他們兩人創造了棋盤,併爲玩家的棋盤放置了船隻。但是我被困在隨機使用random.randint的計算機板上。戰艦遊戲 - 隨機放置船

我得到的輸出此錯誤:文件「蟒蛇」,第98行,在comp_place_ships 類型錯誤:「功能」對象未標化的

下面是代碼:

#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

+0

你可以添加函數調用語句嗎? –

+0

現在添加了函數調用,並鏈接到我的整個代碼。 – Tinadark

+0

但是你的repl.it代碼是'comp_place_ships(comp_place_ships,ships)',而不是'comp_place_ships(comp_board,ships)''。應該是問題嗎? –

回答

0

您傳遞功能comp_board,而不是一個實例。

爲了幫助您看看這是怎麼回事,放置一個斷點在該行,並檢查變量,看看是什麼樣子。