我是C ++的新手,我必须为匹配的游戏编写代码,而且我在检测匹配的功能方面遇到了麻烦。 下面是我试图调试匹配函数的游戏的简单,淡化版本。 基本上我有一堆数字存储在2D数组中,我需要在网格中循环以查看是否有任何匹配(连续3个相同的字符,垂直或水平,构成匹配)。用户为每场比赛获得一分。 每次匹配时,我都需要累积一个存储用户得分的变量。我认为代码非常直观,循环和if语句检查第i个元素之后的第二个和第三个元素,如果它们都相同,则检测到匹配。
我遇到的问题是,当它们应该没有将点添加到count变量时。 "事物"数组是为了模仿游戏板,我设计它至少有一个匹配,我的if语句似乎没有检测到。我如何解决这个问题"计算"会存点吗?
我以前从来没有在这里发布过任何内容,所以我很抱歉格式稍微有点麻烦,但这里的代码是:
#include <iostream>
using namespace std;
int main()
{
int things[3][3] = {{3, 3, 3}, {2, 8, 4}, {3, 7, 2}};
int count = 0;
for (int i = 0; i <= 3; i++)
{
for (int j = 0; j <= 3; j++)
{
if (things[i] == things[i+1])
count++;
if (things[i] == things[i+2])
count++;
if (things[i] == things[i+3])
count++;
else
{
if (things[j] == things[j+1])
count++;
if (things[j] == things[j+2])
count++;
if (things[j] == things[j+3])
count++;
}
}
}
return 0;
}
答案 0 :(得分:0)
连续3个相同的字符,垂直或水平构成匹配
对此进行正确编码您需要先获得正确的算法。
所以这就是我用伪代码写的方式:
For every row:
- For first n-2 columns in this row
- if current match result and next 2 match results are the same : increment counter
For every column:
- For first n-2 rows in this column
- if current match result and next 2 match results are the same : increment counter