我正在尝试编写“Conways Game of Life”可视化。我想我对如何解决它有一个坚实的想法,但我遇到的问题是:当我尝试输出我的2d数组的行和列时,它开始在数字之间跳转到最后它永远不会停止滚动数字。它似乎陷入了78的“x”。
#include <iostream>
#include <cstring>
#include <cstdlib>
#define HEIGHT 25
#define WIDTH 80
using namespace std;
void makeBoard();
int seed = 0;
int main()
{
makeBoard();
}
void makeBoard()
{
int board[79][24] = {0};
/* Seed the random number generator with the specified seed */
srand(seed);
for(int x = 0; x <= 79; x++)
{
for(int y = 0; y <= 24; y++)
{
/* 50% chance for a cell to be alive */
if(rand() % 100 < 50)
{
board[x][y] = {1};
}
else
{
board[x][y] = {0};
}
/*if(board[x][y] == 1) {
cout << "SPAM" << endl;
}*/
//this is just printing out the current location it is iterating through.
cout << "X: " << x << " Y: " << y << endl;
}
cout << endl;
}
}
运行它所需的所有代码都应该就在那里。
感谢您的帮助和耐心。
答案 0 :(得分:6)
你的指数超出范围。 [79] [24]的数组的索引从0到19和0-23。你的病情分别停留在79和24。将&lt; =与&lt;。
替换答案 1 :(得分:0)
大小为N的数组从0到n-1。你需要替换&lt; = with&lt;,因为你的数组的每个维度的边界都用完了。
另请注意,您只有79列和24行,而不是您在程序顶部定义的80和25行。您可以通过执行以下操作来解决此问题:
int board[HEIGHT][WIDTH];
然后分别用高度和宽度代替79和24,并将环路条件中的&lt; =更改为&lt;。这样你只需要改变顶部的单个值来改变整个电路板的大小。