2016-05-06 12 views
0

これは初めてのコーディングです。私はab選択モジュールとしてそれをやっている。私はai_playerをランダムにプレーすることから勝つようにプログラムする必要があり、私は立ち往生しています。アドバイスをいただければ幸いです。ゲームはConnect 4です。「オブジェクトに属性がありません」というエラーが表示され続けます。'function'オブジェクトには属性 '__getitem__'がありません

import random 
import time 


def board(): 

    for i in range(0, 8, 1): 
     for j in range(0, 10, 1): 
      board[i][j] = 0 

    return board 


def move(board, valid_move): 

    start_time = time.time() 

    x = 0 

    while x == 0: 

     i = range(7, -1, -1) 
     j = range(0, 10, 1) 

     first_move = board[i][j] 
     board[7][4] = 1 

     if board[i-1][j] == 0: #above 
      first_move = [i, j] 
      x = 1 
      print " valid above" 
      return j 

     elif (board[i][j+1] == 0 and (i <= 7 and j <= 9)) or (board[i-1][j+1] == 0 and (i <= 7 and j <= 9)) or (board[i-1][j+1] == 0 and (i <= 7 and j <= 9)): #right 
      first_move = [i, (j+1)] 
      x = 1 
      print " valid right" 
      return (j+1) 

     elif board[i][j-1] == 0 or board[i-1][j-1] == 0 or board[i-1][j-1] == 0: #left 
      first_move = [i, (j-1)] 
      x = 1 
      print " valid left" 
      return (j-1) 

     else: 
      r = random.randint(0, 7) 
      c = random.randint(0, 9) 
      first_move = [r, c] 
      x = 1 
      print " random move" 
      return c 

    end_time = time.time() - start_time 
    print end_time 

    return first_move 


File "F:/5. Fifth year/1st Semester/MPR 213 2016/Project 2016/attempts.py", line 20, in board 
    board[i][j] = 0 

TypeError: 'function' object has no attribute '__getitem__' 

答えて

0

boardという多次元リストを作成しようとしているようです。これはあなたが実際に行ったことですが、boardという関数が作成され、その関数のインデックスを作成しようとします。これはリストではないので失敗します。 boardを作成するには

は、

board = [[0] * 10 for i in range(0, 8)] 
+0

はありがとうのようなものを使用します。私はもうボード機能にエラーが出ない。 – Wez

+0

@ zondoああ、ありがとう、それを知らなかった。一定。 –

関連する問題