人生游戏中的随机播种不能很好地工作
Random seeding in Game of Life cannot working well
我正在为作业开发生活游戏。我尝试使用随机数进行播种,但下一代不起作用。如何使用随机播种来检查下一代。当我使用手册播种时,代码正常工作。但是当我使用随机播种时不起作用。
手动播种
for (int i = 0;i<n;i++)
{
cout << "Enter the coordinates of cell " << i + 1 << " : ";
cin >> x >> y;
gridOne[x][y] = true;
printGrid(gridOne);
}
随机播种
void generation(int gridOne[gridSize + 1][gridSize + 1])
{
int row, col;
srand(time(0));
for (row = 0; row < gridSize + 1; row++)
{
for (col = 0; col < gridSize + 1; col++)
{
gridOne[gridSize + 1][gridSize + 1] = (int)(rand() % 2);
cout << gridOne[gridSize + 1][gridSize + 1] << ' ';
}
cout << endl;
}
}
主要程序
int main()
{
clock_t begin, finish;
bool gridOne[gridSize + 1][gridSize + 1] = {};
//seeding code
cout << "Please enter number of iteration : " << endl;
cin >> iteration;
for (int a = 0; a<iteration; a++)
{
begin = clock();
printGrid(gridOne);
determineState(gridOne);
cout << endl;
}
finish = clock();
cout << "The elapsed time : " << (double)(finish - begin) / CLOCKS_PER_SEC;
system("pause");
return 0;
}
void printGrid(bool gridOne[gridSize + 1][gridSize + 1]) {
for (int a = 1; a < gridSize; a++)
{
for (int b = 1; b < gridSize; b++)
{
if (gridOne[a][b] == true)
{
cout << " xDB ";
}
else
{
cout << " . ";
}
if (b == gridSize - 1)
{
cout << endl;
}
}
}
}
void compareGrid(bool gridOne[gridSize + 1][gridSize + 1], bool gridTwo[gridSize + 1][gridSize + 1]) {
for (int a = 0; a < gridSize; a++)
{
for (int b = 0; b < gridSize; b++)
{
gridTwo[a][b] = gridOne[a][b];
}
}
}
void determineState(bool gridOne[gridSize + 1][gridSize + 1]) {
bool gridTwo[gridSize + 1][gridSize + 1] = {};
compareGrid(gridOne, gridTwo);
for (int a = 1; a < gridSize; a++)
{
for (int b = 1; b < gridSize; b++)
{
int alive = 0;
for (int c = -1; c < 2; c++)
{
for (int d = -1; d < 2; d++)
{
if (!(c == 0 && d == 0))
{
if (gridTwo[a + c][b + d])
{
++alive;
}
}
}
}
if (alive < 2)
{
gridOne[a][b] = false;
}
else if (alive == 3)
{
gridOne[a][b] = true;
}
else if (alive > 3)
{
gridOne[a][b] = false;
}
}
}
}
预先感谢。
for (col = 0; col < gridSize + 1; col++)
{
gridOne[gridSize + 1][gridSize + 1] = (int)(rand() % 2);
cout << gridOne[gridSize + 1][gridSize + 1] << ' ';
}
检查Gridone数组上的索引,您始终在内存中编辑与数组末端相同的位置。应该是
for (col = 0; col < gridSize + 1; col++)
{
gridOne[row][col] = (int)(rand() % 2);
cout << gridOne[row][col] << ' ';
}
相关文章:
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 有没有办法关闭文件? fclose 不能很好地工作
- 不能很好地运行HElib,但它建立在Windows 10 x64上
- 人生游戏中的随机播种不能很好地工作
- Qt - 拖动移动 q图形项不能很好地工作
- boost::range::d etail::any_iterator 不能很好地与 boost::zip_iterator 一起使用
- 不能很好地与send()和recv()一起使用,短字符串的第一个字节丢失了.c++
- Qt串行端口不能很好地读取字符串
- std::reference_wrapper不能很好地使用std::bind
- C++多项式类,打印成员函数不能很好地使用幂
- std::ref 和交换功能似乎不能很好地协同工作
- 多参数模板不能很好地处理友元声明
- 为什么 wxwidgets 和 sfml 不能很好地玩?
- 底片不能很好地叠加
- STL 排序不能很好地对我的向量<对<int,int> >进行排序
- 用于HBITMP的函数DestroyObject不能很好地工作(内存泄漏)
- CUDA + C++不能很好地配合使用
- c++的cin或vector clear不能很好地工作
- GCC 中的断言和未使用的局部变量警告不能很好地混合?
- MultiByteToWideChar不能很好地转换我的字符串