私はチェス サーバーとチェス用の 1 つまたは複数のクライアントを作成するつもりであり、プログラミング言語に依存しない方法で、チェスのルール (たとえば、ゲームの状態に基づいて許容される動き、ゲームが完了したときのルール) を記述したいと考えています。一部のチェス ルール (キング キャスリング、アンパッサン、3 回以上の繰り返しの動きに基づく引き分けなど) はボード レイアウトだけでなく、動きの履歴にも基づいているため、これは少し注意が必要です。
形式は次のようにすることをお勧めします。
- 原文
- 人間が読める
- 標準に基づく (YAML、XML など)
- さまざまな言語で簡単に解析可能
しかし、適切な解決策を得るために、これらのいずれかを喜んで犠牲にします。
私の主な質問は次のとおりです。データ形式からこのような複雑な状態で動作するような複雑なアルゴリズムを構築するにはどうすればよいですか?
フォローアップの質問は次のとおりです。出発点として機能する同様の方法で解決された同様の問題の例を提供できますか?
編集:明確にするためのリクエストに応えて、Pythonで記述されたサーバー、C#で記述された1つのクライアント、およびJavaで記述された別のクライアントがあると考えてください。場所ごとにルール(駒の移動の許容範囲、チェックの状況など)を明記するのは避けたいと思います。これらのルールは、言語に依存しない方法で一度指定することをお勧めします。