我用 C++(控制台)编写了一个简单的 Langtons Ant。但是(不知道为什么)每次运行程序时我都会转储一个核心:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand(time(NULL));
bool endGame = false;
enum compass {north, east, south, west};
compass dir = north;
int x = 0, y = 0;
int n = 30, m = 30;
int **board = new int*[n];
for(int i = 0; i <n; i++)
board[i] = new int[m];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
board[i][j] = rand()%2;
long count = 0;
while(!endGame)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
//Print board
if(board[i][j] == 0)
cout << '+';
else
cout << '#';
}
cout << endl;
}
//Ant
if (board[x][y] == 0)
{
board[x][y] = 1;
switch (dir){
case north:
dir = east;
x = ((x+1)%m);
break;
case east:
dir = south;
y = ((y-1) % n);
break;
case south:
dir = west;
x = ((x-1) % m);
break;
case west:
dir = north;
y = ((y+1) %n);
break;
}
}else
{
board[x][y] = 0;
switch(dir){
case north:
dir = west;
x = ((x-1) % m);
break;
case west:
dir = south;
y = ((y-1) % n);
break;
case south:
dir = east;
x = ((x+1)%m);
break;
case east:
dir = north;
y = ((y+1) %n);
break;
}
}
cout << endl << count << endl;
count++;
cin.sync();
cin.get();
}
cin.sync();
cin.get();
return 0;
}
我怎样才能摆脱这个错误?