簡體   English   中英

Python國際象棋驗證移動

[英]Python Chess Validation move

我是編程新手,正在嘗試實現一個小型國際象棋游戲。

我目前正在為每件作品的驗證動作而苦苦掙扎。

每個片段都是從更高級別的“ ChessPiece”繼承的對象。 該板是64個元素(“板數組”)的dict :左上角是元素0(即A8是黑樹懶上的黑鴉),而右下角元素64是(即H1是黑樹懶上的白黑鴉) )。

用戶輸入坐標,例如a1,然后程序通過字典檢索“板數組”中的索引。

字典是:

board_array= {
    "a8": 0, "a7": 8, "a6": 16, "a5": 24, "a4": 32, "a3": 40, "a2": 48, "a1": 56,
    "b8": 1, "b7": 9, "b6": 17, "b5": 25, "b4": 33, "b3": 41, "b2": 49, "b1": 57,
    "c8": 2, "c7": 10, "c6": 18, "c5": 26, "c4": 34, "c3": 42, "c2": 50, "c1": 58,
    "d8": 3, "d7": 11, "d6": 19, "d5": 27, "d4": 35, "d3": 43, "d2": 51, "d1": 59,
    "e8": 4, "e7": 12, "e6": 20, "e5": 28, "e4": 36, "e3": 44, "e2": 52, "e1": 60,
    "f8": 5, "f7": 13, "f6": 21, "f5": 29, "f4": 37, "f3": 45, "f2": 53, "f1": 61,
    "g8": 6, "g7": 14, "g6": 22, "g5": 30, "g4": 38, "g3": 46, "g2": 54, "g1": 62,
    "h8": 7, "h7": 15, "h6": 23, "h5": 31, "h4": 39, "h3": 47, "h2": 55, "h1": 63,
}

我在每個子類(Pawn,Rook,Queen ...)中創建了一個函數,該函數應驗證此移動。 語法類似於:

def isvalid(self, final_position):
   #Check if the final_position is valid. If it is valid, return True and thus the program che update the instance position. Otherwise, return False and re-ask the user to input a valid final_position

目前,我可以將任何一塊白色的東西放進任何白色的樹懶或上面放着一個黑色的樹懶(但我自己不能吃東西),反之亦然。

問題是我不知道如何開始驗證。

我猜想我是在為董事會使用dict而不是列表列表,這使事情變得更加困難。 我真的迷路了。 如果您可以通過顯示驗證來幫助我,這真是太了不起了,也許是為Rook等更簡單的產品。

對於菜鳥:

 def invalid(pos, target):

       d0 = 1 if pos[0]>target[0] else -1
       d1 = 1 if pos[1]>target[1] else -1
       return any(board_array[i + j ] for i, j in zip(range(target[0], pos[0], d0 ), range(target[1], pos[1], d1 ))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM