用于验证国际象棋输入的正则表达式?

时间:2011-06-01 15:16:42

标签: php regex chess

我正在使用HTML / CSS / PHP开展基于国际象棋的爱好项目。我事先并不熟悉国际象棋,所以我决定制作一个工具,根据给定棋子的类型和方格显示允许哪些动作。

我有一个带有两个文本字段的HTML表单:一个是作品的类型,另一个是所述作品的当前正方形。一切正常,但我想使用正则表达式包含验证。

片段类型的有效,不区分大小写的输入是 p,pawn,r,rook,b,bishop,n,knight,q,queen,k,king

广场的有效,不区分大小写的输入是 LetterNumber ,其中 Letter 可以 AH Number 可以 1-8

所以我想知道使用正则表达式是否可行/实用,如果是这样,有人能让我知道它们是什么吗?我想我应该只使用带有逻辑ors的条件语句作为片段类型,但我很想知道是否还有其他解决方案。

3 个答案:

答案 0 :(得分:8)

编程国际象棋运动验证

你总是可以使用正则表达式来至少设置要调查的图块(不需要调查那些块根本无法移动的图块),例如,拾取一个peon时应该检查最多四个图块(两个罢工)地点,单动,可能是最初的双重动作。

我相信它可以用这样的东西来完成:

1 algoritm获取要检查的字段数组。 字段检测阻塞片段的路径(好的和坏的)。 (骑士不需要,因为他疯了;]) 字段检测敌人的碎片以进行打击(在路径中,除了棋子。)

记得:   - 如果移动会让您受到检查,则无法执行此操作。   - 如果你在检查,你只能避免检查或   - 只有“特殊规则”才能进行铸造和推广。促销并不会影响您的运动计算。铸造可以用两个布线来完成,“皇后边完好无损”和“国王边完好无损”,如果有任何移动,开始真实并打破假(不要只是检测他们是否站在正确的地方,因为一些国际象棋模拟器...它的尴尬。将你的女王移回她的起始位置并不会为女王铸造而开放。)


更优质的PHP国际象棋资源

以下是一些基于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

答案 1 :(得分:5)

输入的正则表达式:

  • Piece:^ [p | r | b | n | q | k | P | R | B | N | Q | K] $
  • 位置:^ [A-H | a-h] [1-8] $

您可以为表单评估onblur,onchange和onsubmit。

我同意验证客户端和服务器端的移动也很有意义。

答案 2 :(得分:2)

我强烈建议您针对这样的任务使用正则表达式。任何给定作品的有效移动都与其当前位置和颜色有关,并且通过验证功能可以更好地验证。