走过的元素,用大写英文字母A-Z按顺序代替,运行出来乱七八糟的,斜着走,还跳2步。觉得自己写的很冗长,还没实现功能。
#include
#include
#include
#define RAW 10
#define COL 10
#define DIREC 4
int main(void)
{
char Checkerboard[RAW][COL],Letter[26];
int i=0,j=0,direction,k=1;
for(i=0;i<RAW;i++){
for(j=0;j<COL;j++)
Checkerboard[i][j]='.';
}
Letter[0]='A';
for(i=1;i<26;i++)
Letter[i]=Letter[i-1]+1;//26字母存入数组
srand((unsigned)time(NULL));
i=rand()%RAW;//余数0,1,2,3.....9
j=rand()%COL;//余数0,1,2,3.....9
Checkerboard[i][j]=Letter[0];//确定棋盘上第一个字母A的位置
while(Checkerboard[i+1][j]=='.'||Checkerboard[i-1][j]=='.'||Checkerboard[i][j+1]=='.' ||Checkerboard[i][j-1]=='.'){
direction=rand() % DIREC;//余数0,1,2,3代表方向
switch(direction){
case 0:
i--;//上移
if((i<10 && i>=0) && Checkerboard[i][j]=='.' ){
Checkerboard[i][j]=Letter[k];
k++;
break;
}
else
break;
case 1:
i++;//下移
if((i<10 && i>=0) && Checkerboard[i][j]=='.' ){
Checkerboard[i][j]=Letter[k];
k++;
break;
}
else
break;
case 2:
j--;//左移
if((j<10 && j>=0) && Checkerboard[i][j]=='.' ){
Checkerboard[i][j]=Letter[k];
k++;
break;
}
else
break;
case 3:
j++;//右移
if((j<10 && j>=0) && Checkerboard[i][j]=='.' ){
Checkerboard[i][j]=Letter[k];
k++;
break;
}
else
break;
}
}
for(i=0;i<RAW;i++){
for(j=0;j<COL;j++)
printf(" %c",Checkerboard[i][j]);
printf("\n");
}
return 0;
}