⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 骑士漫游.c

📁 骑士漫游
💻 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=&currentrow,*ccPtr=&currentcolumn;
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 + -