作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发适用于 Windows 的 Gomoku 游戏,并且正在使用 MFC。我目前正在研究对角线的获胜算法。我的水平和垂直工作都很好。我希望有人可以帮助阐明我的逻辑错误的地方。这是代码:
bool CMainFrame::isWinner(int player){
for (int row = 0; row < data.size(); row++) {
for (int col = 0; col < data.size(); col++) {
if (data[row][col].color == player && data[row + 1][col + 1].color == player && data[row + 2][col + 2].color == player && data[row + 3][col + 3].color == player && data[row + 4][col + 4].color == player) {
CheckForGameOver(player); //function that simply shows message box of winning piece
return true;
}
}
}
}
它只适用于连接到左上角的对角线。对编程相当陌生,因此我们将不胜感激任何帮助。
最佳答案
这个游戏的规则是 5 个项目应该在一行、一列或对角线中匹配。只需比较每一行、每一列和对角线,看看是否有 5 项匹配,并返回 true。否则该函数应返回 false。
bool won(std::vector<std::vector<data_t>> &data, int color)
{
//check each row:
for(int row = 0; row < 15; row++)
for(int col = 0; col < 10; col++)
{
bool match = true;
for(int i = 0; i < 5; i++)
if(color != data[row][col + i].color)
match = false;
if(match) return true;
}
//check each column:
for(int col = 0; col < 10; col++)
for(int row = 0; row < 15; row++)
{
bool match = true;
for(int i = 0; i < 5; i++)
if(color == data[row + i][col].color)
match = false;
if(match) return true;
}
//check diagonal lines from top-left to bottom-right
for(int col = 0; col < 10; col++)
for(int row = 0; row < 10; row++)
{
bool match = true;
for(int i = 0; i < 5; i++)
if(color == data[row + i][col + i].color)
match = false;
if(match) return true;
}
//lastly check diagonal lines from top-right to bottom-left
return false;
}
关于c++ - 五子棋对角线获胜条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47754747/
我正在开发一个 CMD 批次。我想在里面做一些数学运算。这个公式:(x+1)100:y 所以批量处理,x = %x%, and y = %y% .我知道如何设置变量。现在,如何批量计算这个? (WIN
我正在使用 Electron 制作桌面应用程序,我制作了自己的最小化最大化和关闭按钮,所有这些按钮都工作正常,但是当您单击最大化并且它已经最大化时,它并没有取消最大化。这是我的代码: const $
目前我在这里面临着危机。 问题是,当我尝试使用 Windows 窗体的默认 WebBrowser 控件打开 G-Mail 时,它说浏览器不支持较新版本的 HTML 即 XHTML。 那么,有人能建议我
我遇到了一个让我发疯的问题。我在一个网站上工作,该网站在与主导航相同的 div 中有一个框。它一直显示到右边(栏的宽度为 100%),我需要它显示在带有主导航的 div 中(宽度 1020px) 我正
我是一名优秀的程序员,十分优秀!