📄 骑士漫游.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 5
int moveknight(int [][SIZE],int *,int *);
void printroute(int [][SIZE],int *,int *);
main()
{
int checkerboard[SIZE][SIZE]={1},count=2,answer;
int currentrow=0,currentcolumn=0;
int *crPtr=¤trow,*ccPtr=¤tcolumn;
srand(time(NULL));
//printroute(checkerboard,crPtr,ccPtr);
while(count<=25)
{
answer=moveknight(checkerboard,crPtr,ccPtr);
if(answer==1){
printroute(checkerboard,crPtr,ccPtr);
checkerboard[*crPtr][*ccPtr]=count;
count++;
}
}
system("pause");
}
int moveknight(int checkerboard[][SIZE],int * crPtr,int * ccPtr)
{
int horizontal[8]={2,1,-1,-2,-2,-1,1,2},vertical[8]={-1,-2,-2,-1,1,2,2,1};
int temprow,tempcolumn,movenumber;
movenumber=rand()%8;
temprow=*crPtr;
tempcolumn=*ccPtr;
(*crPtr)+=vertical[movenumber];
(*ccPtr)+=horizontal[movenumber];
if(*crPtr>=0&&*crPtr<=SIZE-1&&*ccPtr>=0&&*ccPtr<=SIZE-1)
{
if(checkerboard[*crPtr][*ccPtr]==0)
return 1;
if(checkerboard[*crPtr][*ccPtr]!=0){ //这里不能写成checkerboard[i][j]==1,因为其值可能为count//
*crPtr=temprow;
*ccPtr=tempcolumn;
return 0;
}
}
else{
*crPtr=temprow;
*ccPtr=tempcolumn;
return 0;
}
}
void printroute(int checkerboard[][SIZE],int *crPtr,int * ccPtr)
{
int i,j;
for(i=0;i<=SIZE-1;i++){
for(j=0;j<=SIZE-1;j++)
printf("%-3d",checkerboard[i][j]);
printf("\n");
}
printf("**************\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -