嵌套for循环中累加器的难度

时间:2017-11-06 00:39:58

标签: c++ matching accumulator

我是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;
}

1 个答案:

答案 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