2016-12-24 10 views
0

私はtik-tak-toeゲームを作成しています。ネストしたセットの反復でインデックス外エラーが発生する

def check_win(self,mark): 
    return ((self.bd[1]==self.bd[2]==self.bd[3]==mark) or 
     (self.bd[4] ==self.bd[5] ==self.bd[6] ==mark) or 
     (self.bd[7]==self.bd[8]==self.bd[9] ==mark) or 
     (self.bd[1] ==self.bd[4] ==self.bd[7] ==mark) or 
     (self.bd[2] ==self.bd[5] ==self.bd[8] ==mark) or 
     (self.bd[3] ==self.bd[6] ==self.bd[9]==mark) or 
     (self.bd[1] ==self.bd[5] ==self.bd[9]==mark) or 
     (self.bd[3] ==self.bd[5] ==self.bd[7]==mark) 
     ) 

小さなコードを使用したいのですが、インデックスエラーで私を逃してしまいます。

win_comb = ((1,2,3),(4,5,6),(7,8,9),(1,4,7),(2,5,6),(3,6,9),(1,5,9),(3,5,7)) 
def check_win(self,mark): 
    #pdb.set_trace() 
    for elem in self.win_comb: 
     if self.win_comb[elem[0]]== self.win_comb[elem[1]]== self.win_comb[elem[2]]==mark: 
      return True 
    else: 
     return False 

ERROR:

if self.win_comb[elem[0]]== self.win_comb[elem[1]]== self.win_comb[elem[2]]==mark:IndexError: tuple index out of range 
+0

あなたはすでに 'win_comb'の個々のタプルをループし、それらの要素で' win_comb'のインデックスを作成しようとしています( 'win_comb [elem]')。単に 'elem [0]'を直接使用してください。 – Evert

答えて

0

でも、次のようにコードで、それもすべてのプレイヤーが

def check_win(self,mark): 
#pdb.set_trace() 
for elem in self.win_comb: 
    if elem[0]]== elem[1]== elem[2]==mark: 
     return True 
else: 
    return False  



e Player-1, Enter your position from 1 to 9 9 
X| O | X 

O| X | O 

勝常にネクタイです

これは、タイでは

0

あなたの問題は、あなたの関数の新しいループベースのバージョンでは、あなたがすべてでボードの状態を検査しないことである(はい/いいえ)、再び再生していない !言い換えれば、self.bdへの参照はどこですか?それは行方不明です!

関連する問題