gpt4 book ai didi

Python 国际象棋验证 Action

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:36 25 4
gpt4 key购买 nike

我是编程新手,我正在尝试实现一个小型国际象棋游戏。

我目前正在为每件作品的验证工作而苦苦挣扎。

每个棋子都是一个继承自更高类“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 ))]

关于Python 国际象棋验证 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com