#include #include #define XMAX 75 //フィールドの横幅 #define YMAX 75 //フィールドの縦幅 #define CNTSPACE 100 //描写間隔 char field[XMAX][YMAX]; enum Direction {up, right, down, left}; int main(void) { enum Direction dir; int x, y, i, j, cnt = 0; for(i = 0; i < XMAX; i++) //0が白、1が黒なので全て白に初期化 { for(j = 0; j < YMAX; j++) { field[i][j] = 0; } } x = XMAX / 2; //フィールド中央からスタート y = YMAX / 2; dir = up; //進行方向は上からスタート while((x >= 0) && (y >= 0) && (x < XMAX) && (y < YMAX)) { cnt++; if(field[x][y]) { field[x][y] = 0; if(dir == left) dir = up; else dir++; } else { field[x][y] = 1; if(dir == up) dir = left; else dir--; } switch(dir) { case up: y++; break; case down: y--; break; case right: x++; break; case left: x--; break; } if(cnt == CNTSPACE) { system("cls"); for(i = 0; i < XMAX; i++) { for(j = 0; j < YMAX; j++) { field[i][j] ? putchar('@') : putchar('_'); } putchar('\n'); } cnt = 0; } } return 0; }