【问题标题】:Searching for other pieces in C++ reversi game在 C++ 黑白棋游戏中搜索其他棋子
【发布时间】:2016-01-06 23:14:34
【问题描述】:

我正在用 C++ 制作 Reversi 游戏,但是一旦玩家将棋子放在棋盘上,我就无法弄清楚如何检查连续的敌棋棋子。

棋盘是一个 8x8 二维数组,值为 0、-1 或 1。

  • -1 是白棋,
  • 1 是黑色棋子并且
  • 0 是一个空单元格。

ApplyMove 功能将简单地将当前玩家的棋子放在棋盘上并检查是否有敌方棋子在任何方向运行。然后它会朝那个方向翻转所有的碎片。

我的函数会有这些参数:

void ApplyMove(char board[BOARD_SIZE][BOARD_SIZE], int row, int col, char currentPlayer)

我希望程序使用循环从玩家放置的棋子开始遍历所有 8 个可能的方向。如果没有一堆 if 和 else,这将如何以最简单的方式完成?

【问题讨论】:

标签: c++ arrays visual-studio loops reversi


【解决方案1】:

让我印象深刻的一种简单方法是使用变量 xoffsetyoffset,它们的值分别为 1、0、-1。对这些变量的值使用for 循环,然后使用while 循环跟踪连续片段。

【讨论】:

  • 我明白你的意思,但我必须为每个方向创建 8 个不同的循环吗?
  • 否;假设你在位置 (a,b)。 xoffset 有一个外循环,范围从 -1 到 1,offset 有一个内循环,范围相同。将 (c,d) 初始化为与 (a,b) 相同,然后放置一个 do/while 循环,将xoffset 添加到c,并将yoffset 添加到d。当您到达一块您的颜色或一个空的位置时,最里面的循环终止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2015-02-28
相关资源
最近更新 更多