Python 0x88棋盘表示法
我正在尝试用wxPython中的GUI制作一个2人国际象棋程序,该程序能够验证移动并遵循每一个国际象棋规则 现在,我正处于设计的开始阶段,正在考虑应该使用哪种电路板表示技术。我最近想到了一个明显的二维数组,但后来我读到了一篇文章,认为它在查找和逻辑上检查正方形是否在棋盘内。但是,如果我制作了一个没有人工智能的程序,就不需要检查是否有人移动了一个跳板之外的移动 0x88表示法是否还有我不知道的其他优点?您推荐哪一种,8x8表示法还是0x88表示法。另外,首先使用8x8表示是否容易,然后,如果我决定添加AI,可能会使用0x88表示?Python 0x88棋盘表示法,python,wxpython,artificial-intelligence,chess,Python,Wxpython,Artificial Intelligence,Chess,我正在尝试用wxPython中的GUI制作一个2人国际象棋程序,该程序能够验证移动并遵循每一个国际象棋规则 现在,我正处于设计的开始阶段,正在考虑应该使用哪种电路板表示技术。我最近想到了一个明显的二维数组,但后来我读到了一篇文章,认为它在查找和逻辑上检查正方形是否在棋盘内。但是,如果我制作了一个没有人工智能的程序,就不需要检查是否有人移动了一个跳板之外的移动 0x88表示法是否还有我不知道的其他优点?您推荐哪一种,8x8表示法还是0x88表示法。另外,首先使用8x8表示是否容易,然后,如果我决定
非常感谢您的想法。我同意您的看法,如果您不使用人工智能,那么就没有太多理由像这样进行微优化 我要提出的一个建议是,如果您考虑从8x8切换到0x88(一般来说,为了获得良好的代码质量),您应该将尽可能多的板访问逻辑抽象为函数。例如,编写并使用
getPieceAtLocation(char file, int rank)
打电话
Piece p = getPieceAtLocation('e', 2);
或者类似的东西。这样,如果你决定改变主意,你只需要在getPieceAtLocation
中重新编写逻辑,而不是改变你必须使用它的每个地方。
这可能对您有所帮助…无法添加评论,因此将此作为答案发布。您还应查看其他wxPython(或其他)国际象棋项目,以获取想法:
- (wx)
- (特金特)
- PyGame-
Python给了你很多好的工具。使用它们。你的程序会很慢,这没有什么错。它不会“感觉”慢,这才是最重要的。如果我是你,我绝对会使用Python,而且我不会再考虑在Python中使用任何这些琐碎的想法。如果你是用C或汇编语言编写的,琐碎的琐碎是有趣的。在Python中它是毫无意义的。你不会真正看到消费类计算机的性能差异今天,我的手机有足够的处理能力下国际象棋,并且一直打败我。