如何添加到现有号码? C++
Posted
技术标签:
【中文标题】如何添加到现有号码? C++【英文标题】:How to add to existing numbers? C++ 【发布时间】:2021-07-18 00:36:50 【问题描述】:我希望你们都度过了美好的一天。只是为了提供一些背景信息,我正在尝试用 C++ 制作 Mancala 游戏。情况是我想在用户提供索引时添加到每个数字。例如,如果用户在游戏中输入 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
【问题讨论】:
这里有很多代码,我不确定我是否理解实际问题。你能把它缩小到不起作用的功能,它应该做什么,以及它正在做什么吗?我不知道您所说的“4 4 4 4 4 4 0 4 4 4 4 4 4 0 至:5 4 4 4 4 4 0 4 4 4 0 5 5 1”是什么意思。 绝对!谢谢你的回复。当用户提供索引时,我想添加到每个数字。例如,如果用户在 4 4 4 4 4 4 0 4 4 4 4 4 4 0 的游戏中输入 10,那么这将是倒数第四个数字 - 零是分数。将会发生的是 +1(四分)将进入每个数字,导致: 5 4 4 4 4 4 0 4 4 4 0 5 5 1 ....“1”已更改,因为用户将一个点放入他们的侧面 @beginnercoderuh 很抱歉,但我仍然不明白您的问题。 10 如何转化为04
被选中?然后你想加 1 到什么?为什么只有 2 个04
变成05
而指向的04
变成00
?我们需要阅读 Mancala 游戏吗?另外,最后一行的个位数 0 是什么?请阅读this,以便我们为您提供帮助。
提示:模(余数)运算符。板子看起来有点圆形(事实上,你可以把它做成圆形)。
提示:如果一个豆荚(碗)包含 5 个种子,则表示当前碗的种子计数为零,接下来的 5 个种子的种子计数将递增。你可以把它们做成一个链表。
【参考方案1】:
让我们用一个圆形数组来表示棋盘。 每边有 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;
【讨论】:
以上是关于如何添加到现有号码? C++的主要内容,如果未能解决你的问题,请参考以下文章