2017-08-05 66 views
1

我想this was wrong try again!當我選擇的板之外的值打印時的輸入值不是在電路板上,但以某種方式,印刷消息,而不是展現出來,在代碼中斷。插入錯誤的消息,而列表索引超出範圍

def legalMove(self): 
      if self.board[startX][startY] != False: 


    def playerMove(self,tile): 
       if self.legalMove(tile, x, y) == False: 
        continue 
       else: 
        break 
      else: 
       print('this was wrong try again!.') 
     return [x, y] 

錯誤

if self.board[startX][startY] != ' ' or not self.isOnBoard(startX, startY): IndexError: list index out of range

+0

在validMove''並拖動[1]:......是'移動[1]'是什麼意思? –

+0

對不起@MrGoldbeere! – Aurum

回答

2

您應該交換中的條件語句,這樣你永遠不會得到這樣的錯誤:

def legalMove(self,tile,isOnBoard,startX, startY): 
    # swap the statements 
    if not self.isOnBoard(startX, startY) or self.board[startX][startY] != ' ': 
     print('this was wrong try again!') 
     return False 
    return True

雖然我會建議你playerMove方法中執行打印,以便您可以重複使用例如,如果你以後要製作一個AI播放器,則需要使用方法。

def isOnBoard(self, x, y): 
    return 0 <= x < 8 and 0 <= y < 8 


def legalMove(self, startX, startY): # remove arguments 
    return self.isOnBoard(startX, startY) and self.board[startX][startY] != ' ' 


def playerMove(self,tile): 
    validMove = '0 1 2 3 4 5 6 7'.split() 
    while True: 
     move = input().lower() 
     if len(move) == 2 and move[0] in validMove and move[1] in validMove: 
      x = int(move[0]) 
      y = int(move[1]) 
      if not self.legalMove(x, y): 
       print('this was wrong try again!') 
       continue 
      else: 
       break 
     else: 
      print('this was wrong try again!.') 
    return [x, y]

此外,Python允許鏈接比較在一起,如0 <= x < 8這是更優雅。

最後,儘管我可能是錯的,但我認爲有效舉動的範圍應該從07(包括)。所以validMove = '0 1 2 3 4 5 6 7'.split()

+0

是啊,我只是簡化了一點,居然管理員可以改變從4電路板尺寸爲10,這就是爲什麼'validMove',我改變了像你這樣的,但現在的有效運動也得到消息'這是錯誤的重試'...... – Aurum

+0

@Aurum:你能舉出一個與此消息一致的舉動嗎? –

+0

我會發布圖片和ex遊戲板 – Aurum

相關問題