|
描述:
在平面上的正方形格被填上黑色或白色。在其中一格正方形有一只“蚂蚁”。它的头部朝向上下左右其中一方。
若蚂蚁在黑格,右转90度,将该格改为白格,向前移一步;
若蚂蚁在白格,左转90度,将该格改为黑格,向前移一步。
实现:
显示方面依旧使用了easyX
由于不可能让蚂蚁无限走下去,人为地规定了步数20000步,当然也可以自己修改。并且人为规定它要在200*200的矩形中走并处理边界。
源代码:
#include <graphics.h>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
int main()
{
int orgData[200][200];
int times;
int GraphDriver = 480, GraphMode = 400;
int x, y, r;
int tx, ty;
for (int i = 0; i < 200; i++)
for (int j = 0; j < 200; j++)
orgData[i][j] = 0;
initgraph(GraphDriver, GraphMode);
for (int i = 0; i < 200; i++)
for (int j = 0; j < 200; j++)
putpixel(i, j, WHITE);
x = 100;
y = 100;
r = 3;
orgData[x][y] = 1;
putpixel(x, y, BLACK);
for (times = 1; times < 20000; times++)
{
switch (r)
{
case 1:
tx = x;
ty = y - 1;
break;
case 2:
tx = x - 1;
ty = y;
break;
case 3:
tx = x;
ty = y + 1;
break;
case 4:
tx = x + 1;
ty = y;
break;
default:
tx = x;
ty = y;
}
if (tx >= 0)
if (tx < 200)
x = tx;
else
x = tx - 200;
else
x = tx + 200;
if (ty >= 0)
if (ty < 200)
y = ty;
else
y = ty - 200;
else
y = ty + 200;
if (orgData[x][y] == 0)
{
orgData[x][y] = 1;
putpixel(x, y, BLACK);
r = r % 4 + 1;
}
else
{
orgData[x][y] = 0;
putpixel(x, y, WHITE);
r = (r + 2) % 4 + 1;
}
}
system("pause");
}
结果截图:
 |