搜索其他棋子在c++逆向游戏
Searching for other pieces in C++ reversi game
我在c++中制作了一个逆转游戏,但我很难弄清楚如何检查连续的敌人棋盘棋子,一旦玩家将他们的棋子放在棋盘上。
板是一个8x8的2D数组,值为0、-1或1。
- -1是白色的,
- 1为黑色块,
- 0为空单元格。
函数ApplyMove将简单地将当前玩家的棋子放在棋盘上,并检查是否在任何方向上都有敌人的棋子。然后它会把所有的碎片朝那个方向翻转。
我的函数将有这些参数:
void ApplyMove(char board[BOARD_SIZE][BOARD_SIZE], int row, int col, char currentPlayer)
我希望程序使用循环从玩家放置的片段开始,遍历所有8个可能的方向。如何在没有一堆"如果"answers"其他"的情况下,以尽可能简单的方式完成这一任务?
一种让我觉得简单的方法是使用变量xoffset
和yoffset
,它们的值为1,0,-1。对这些变量的值使用for
循环,然后使用while
循环来跟踪连续的片段。
问得好!
我建议你首先考虑如何确切地你决定一个棋子是否应该翻转。在你的八个方向中,你可以在你的棋子和第一个相同颜色的棋子之间翻转任何一个相反颜色的棋子,如果在你到达那个棋子之前有任何空白的地方,就不要翻转任何一个。(请注意,这是一种非常方便的方法,即使在两种颜色之间有0块相反的情况下,因为你会翻转"全部为0";它们。)
当你使用+/- 1时,你也可以做一些很酷的事情——检查值的乘积,看看颜色是否匹配(+1)或不匹配(-1),或者翻转标记乘以-1。
这个概念的快速模型,我们检查选项的行,以及确保我们不离开板-我使用!=
不等于,以防你不熟悉:
set current_player // +1 or -1
set current_space // say [3, 4]
directions = [[-1, -1], [-1, 0], ...]
for direction in directions:
spaces_away = 1
check_space = direction*spaces_away + current_space
while (check_space has values between 1 and 8 for both x and y) and (check_space != 0)
if current_player * (direction*spaces_away + current_space) = -1
spaces_away += 1 // add one so we can check the next space out
check_space = direction*spaces_away + current_space
else
for i from 1 to spaces_away
flip_space = direction*spaces_away + current_space
flip_space * -1 // this will change the color
这里有一些实现需要考虑,主要是我忽略了如何为64个空格中的每个分配-1,0或1。希望没有这个,伪代码已经足够清晰了。
如果for direction in directions
没有意义,请花点时间查找可迭代对象是什么。超级有用的概念,不管你在这里做什么!
- 在C++游戏中与库存系统作斗争
- 换位表导致测试失败(但在游戏中运行良好)
- Craps游戏问题,忽略if语句
- 矢量下标超出SFML游戏中的范围
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 我应该在简单的策略游戏中为各个派系使用类吗 - C++
- 游戏体验和升级
- 我的代码运行良好,但在游戏循环中中断
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 我可以使用任何好的逻辑来阻止计算机将 O 放在井字游戏中的现有 X 上
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 在猜谜游戏 c++ 中不计算尝试次数
- 在C++不适用于猜数字游戏的情况下再次播放选项
- 在为我的基于文本的 RPG 游戏制作库存时遇到困难
- 在定义字符数组(井字游戏)的 for 循环中应用输入限制
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 如何在Linux上正确发布C++软件(游戏)
- 提高基于组件的游戏引擎的效率
- 文本冒险游戏 - 如何区分一种项目类型与另一种项目类型以及如何构建项目类/子类