javascript - 糖果粉碎游戏逻辑

标签 javascript php jquery

<分区>

我正在做一个类似糖果粉碎的游戏,但我在创建逻辑时遇到了问题。
让我们以这张 map 为例:

1, 3, 2, 1

2, 2, 2, 3

1, 3, 2, 2,

3, 3, 3, 2

我如何检查其中一行中是否有大于或等于 3 次的重复数字?

我尝试为每种情况做“if 语句”,但我认为这不是一个好主意,对于每种情况,都应该有专门的功能……或者至少创建一个。

Solutin 可以是 PHP 或 Javascript。

最佳答案

如果您使用如下所示的字符串表示形式,那么 preg_match() 可能会有所帮助。

$rows = array(
  '1321',
  '2223',
  '1322',
  '3332',
  '3222',
  '12312322222222123123'
);


foreach($rows as $row) {
  echo $row .' 3+ repeating values: ';
  if(preg_match('/(1{3,}|2{3,}|3{3,})/',$row,$matches)) {
    echo 'Yes';
    echo ', found at pos. ' . strpos($row, $matches[0]);
    echo ' (' . $matches[0] . ')';
  } else {
    echo 'No';
  }

  echo "\n";
};

输出是:

1321 3+ repeating values: No
2223 3+ repeating values: Yes, found at pos. 0 (222)
1322 3+ repeating values: No
3332 3+ repeating values: Yes, found at pos. 0 (333)
3222 3+ repeating values: Yes, found at pos. 1 (222)
12312322222222123123 3+ repeating values: Yes, found at pos. 6 (22222222)

您可以使用 http://sandbox.onlinephpfunctions.com/code/c183683c96af513e9a4b539ed8f713a685f34541 处的代码

使用 PREG_OFFSET_CAPTURE 标志的替代版本,如@Mark Ba​​ker 所建议的

foreach($rows as $row) {
  echo $row .' 3 repeating values: ';
  if(preg_match('/(1{3,}|2{3,}|3{3,})/',$row,$matches,PREG_OFFSET_CAPTURE)) {
    list($match, $pos) = $matches[0];
    echo "Yes, found at pos. $pos ($match)\n";
  } else {
    echo "No\n";
  }
};

关于javascript - 糖果粉碎游戏逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535967/

相关文章:

php - 计算 php 和 mysql 中某个日期范围内每个州的条目总数

javascript - Flot 工具提示出现在折线图上而不是条形图上

php - 搜索多行mysql

jquery - 我们如何将 X 和 Y 轴移动到气泡图中的中心 (JQPlot)

javascript - 如何使用 JustGage 按扇区显示颜色

javascript - 如何向 CSS Accordion 添加加减号

javascript - 如何将 chrome.storage 与远程托管数据库一起用于 Chrome 扩展?

javascript - 使用javascript将网页转换为图像

javascript - Metro UI 视频在对话框关闭时不会停止

php - PHP中现有的类名冲突,需要一个创造性的解决方案