如何添加到现有号码? C++

How to add to existing numbers? C++

希望你们今天过得愉快。只是为了提供一些背景信息,我正在尝试用 C++ 制作一个宝石棋游戏。案例是我想在用户给出索引时添加到每个数字。例如,如果用户为

游戏输入 10
  04 04 04 04 04 04
00                  00
  04 04 04 04 04 04
           ^^

那就是箭头所指的数字。我想创建代码,将游戏中的每个相应数字加一并产生以下输出:

   04 04 04 04 04 05
00                   01
   04 04 04 00 05 0

让我们用一个圆形数组来表示棋盘。
每一方都有 6 个插槽,加上他们的“奖金”插槽。

static const unsigned int MAX_SLOTS = 14u;

根据我对游戏的理解,移动是通过获取一个槽的内容并以顺时针或逆时针的方式重新分配它们(每个槽一个)来完成的。

std::vector<int> board(MAX_SLOTS) = 
{ 4, 4, 4, 4, 4, 4, 0,
  4, 4, 4, 4, 4, 4, 0};

void player_move(int starting_index, std::vector<int>& gameboard)
{
    const int quantity = gameboard[index];
    const unsigned int board_capacity = gameboard.size();
    gameboard[index] = 0;
    for (int i = 0; i < quantity; ++i)
    {
        const int position = (starting_index + 1 + i) % board_capacity;
        ++gameboard[position];
    }
}

以上代码只执行玩家的移动。下一步是分析棋盘以去除豆子,以及可能的其他动作。

循环数组的关键 技巧% 运算符的使用。

编辑:改变方向
您可以通过更改 position 计算来更改分布方向:

const int position = (board_capacity + starting_index - i - 1) % board_position;