【问题标题】:highlighting pgn substrings on click单击时突出显示 pgn 子字符串
【发布时间】:2022-01-04 07:04:15
【问题描述】:

第二次写到这里。

我有一个字符串和一个按钮。这个字符串是 pgn 格式(代表便携式符号游戏),因此包含国际象棋游戏的移动列表。它是这样制作的:

<p> 1. e4 e5 2. Nf3 Nf6 3. Bc4 ... {this is the comment of current move} ... Bc5</p>

现在,我必须先突出显示 e4,然后是 e5,然后是 Nf3........每次单击按钮时,我都必须在单击时执行此操作。 我不要求一个现成的解决方案,也不要求如何不突出显示 cmets、点和数字,只是如果有人想给我一个输入以开始思考解决方案。

谢谢你,再见

【问题讨论】:

  • 请提供您拥有的所有代码,以便我们知道您的位置。
  • 您希望得到什么答案?
  • 实际上,以下内容对我有好处。我会尝试自己编写一些代码,以后可能会在这里添加

标签: javascript chess


【解决方案1】:

我会假设 pgn 是正确的,并且所有移入其中的都是合法的。然后我会在第一次单击时浏览列表,直到找到“1.”,然后我知道下一个单词是给定的移动。然后在第二次点击你找到下一个词,这将是黑人的回应。在 3 日,您搜索“2.”,依此类推。

您要突出显示移动的开始和结束位置,还是只突出显示结束方块?

  1. 如果您只想突出显示结束方块,它将始终是字符串中的最后 2 个字符(castling、en passant、promotions、checks 和 check mate 除外。这些必须在 if 语句中以不同方式进行检查.

  2. 如果您还想包括棋子的开始位置,那么我认为您需要编写自己的移动生成器并将该位置的所有合法移动与给定的结束方块进行比较。 鉴于您知道移动了哪种类型的棋子,也许您可​​以对末端方块做一些逻辑。例如,如果你有一个骑士移动,例如Nf6,你可以检查周围的所有方格,看看你是否发现一个骑士一个骑士走开。虽然这将是很多检查,所以我认为你最好创建一个简单的移动生成器。

我希望它可以帮助您朝着正确的方向前进。

【讨论】:

  • 非常感谢我的朋友,我会仔细阅读并再次阅读,但我认为我理解了。 :) 再见!
猜你喜欢
  • 2022-01-01
  • 2011-09-20
  • 2020-10-18
  • 2013-10-21
  • 2015-06-24
  • 2013-05-20
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多