C/C++の宿題を片付けます 102代目
■ このスレッドは過去ログ倉庫に格納されています
0535デフォルトの名無しさん
2008/01/10(木) 22:45:37#include<stdio.h>
#include<stdlib.h>
#define FIELD_WIDTH 10
#define FIELD_HEIGHT 10
static int field[FIELD_HEIGHT][FIELD_WIDTH];
void adjust(int *x, int *y){
*x=(*x+FIELD_WIDTH)%FIELD_WIDTH;
*y=(*y+FIELD_HEIGHT)%FIELD_HEIGHT;
}
int is_passed(int x, int y){
adjust(&x, &y);
return field[y][x];
}
int main(void){
int i, x=0, y=0, dx[]={1,0,-1,0},dy[]={0,1,0,-1}, dir, dirlist[4], dirnum;
for(;;){
field[y][x]=1;
for(i=0,dirnum=0;i<4;i++)
if(!is_passed(x+dx[i], y+dy[i])) dirlist[dirnum++]=i;
if(dirnum<=0) break;
dir=dirlist[rand()%dirnum];
x+=dx[dir];
y+=dy[dir];
adjust(&x, &y);
printf("(%d,%d)\n", x, y);
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています