6

HTML/CSS/PHP を使用したチェス ベースの趣味のプロジェクトに取り組んでいます。以前はチェスに詳しくなかったので、特定の駒の種類と正方形に基づいて、どの動きが許可されているかを示すツールを作成することにしました。

2 つのテキスト フィールドを持つ HTML フォームがあります。1 つはピースのタイプ用で、もう 1 つはそのピースの現在の正方形用です。すべてが機能しますが、正規表現を使用した検証を含めたいと考えています。

駒タイプの大文字と小文字を区別しない有効な入力は、p、ポーン、r、ルーク、b、ビショップ、n、ナイト、q、クイーン、k、キングです。

正方形の有効な、大文字と小文字を区別しない入力はLetterNumber です。ここで、LetterAHで、Number1-8です。

だから、正規表現を使用することが可能/実用的かどうか疑問に思っています。ピースタイプに論理和を使用した条件文を使用するだけでよいと考えていますが、他の解決策があるかどうか知りたいです。

4

3 に答える 3

8

チェスの動きの検証のプログラミング

正規表現を使用して、少なくともどのタイルを調査するかを設定できます (ピースが動かないタイルを調査する必要はありません)。移動、および場合によっては最初のダブル移動)。

私はそれが次のようなものでできると信じています:

1 つのアルゴリズムは、チェックするフィールドの配列を取得します。fields はブロック ピース (良いものと悪いもの) のパスを検出します。(騎士は頭がおかしいので必要ありません ;] ) フィールドは、攻撃する敵の駒を検出します (ポーンを除いて、パス内)。

覚えておいてください: - 動きがあなたをチェックする場合、あなたはそれを実行することはできません. - チェックされている場合は、チェックを回避するか、または - 「特別なルール」のみがキャスリングとプロモーションです。また、昇進は移動計算に実際には影響しません。キャスリングは 2 つのブール値、「クイーン サイド インタクト」と「キング サイド インタクト」で実行できます。true から始まり、何かが動くと false に変化します (一部のチェス シムのように、正しい場所に立っているかどうかを検出するだけではいけません.. . 恥ずかしい. クイーンを開始位置に戻しても、クイーンのキャスリングは開かれません.)


まともな PHP Chess リソース

ここにいくつかの php ベースのチェス ゲームがあります。すべてを確認する時間はありませんが、学ぶべき移動検証がたくさんあるはずです。

http://www.bebogame.com/download/php/multiplayer_chess/multiplayer_chess.zip

http://sourceforge.net/projects/some-chess/files/Some%20Chess%202.0/Some%20Chess%202.0%20beta%203/SomeChess_2.0b3.tbz/download

http://www.redlionwebdesign.com/phpchess.htm

于 2011-06-01T15:21:38.037 に答える
5

入力の正規表現:

  • ピース: ^[p|r|b|n|q|k|P|R|B|N|Q|K]$
  • 位置: ^[AH|ah][1-8]$

フォームの onblur、onchange、および onsubmit を評価できます。

クライアント側とサーバー側で移動を検証することも非常に理にかなっていることに同意します。

于 2011-06-01T16:03:09.553 に答える
2

このようなタスクには正規表現を使用しないことを強くお勧めします。特定のピースの有効な動きは、現在の位置と色に関連しており、検証機能を介してより適切に検証されます。

于 2011-06-01T15:24:01.183 に答える