【发布时间】:2008-10-11 16:34:31
【问题描述】:
我将编写一个国际象棋服务器和一个或多个国际象棋客户端,我想用编程语言描述国际象棋规则(例如,基于游戏状态的允许走法、游戏完成时的规则)独立的方式。这有点棘手,因为一些国际象棋规则(例如 King Castling、en passent、基于 3 次或更多重复移动的平局)不仅基于棋盘布局,还基于移动的历史。
我希望格式为:
- 文本
- 人类可读
- 基于标准(例如 YAML、XML)
- 可轻松解析为多种语言
但我愿意牺牲其中任何一个来换取合适的解决方案。
我的主要问题是:我如何构建如此复杂的算法,以根据数据格式对如此复杂的状态进行操作?
后续问题是:您能否提供一个以类似方式解决的类似问题的示例,可以作为起点?
编辑:为了响应清晰的要求——考虑一下我将有一个用 Python 编写的服务器、一个用 C# 编写的客户端和另一个用 Java 编写的客户端。我想避免在每个地方指定规则(例如允许的棋子移动、检查情况等)。我更愿意以独立于语言的方式指定这些规则一次。
【问题讨论】:
-
您是否正在寻找专门为此目的而设计的语言/格式?喜欢 BoardGaML? (虚构)
-
我会让服务器知道规则并拒绝客户端建议的无效移动。
标签: c# java python chess dataformat