永发信息网

C语言做的中国象棋,分享,问怎么在WIN7下运行

答案:1  悬赏:40  手机版
解决时间 2021-03-27 14:28
  • 提问者网友:孤凫
  • 2021-03-26 21:14
C语言做的中国象棋,分享,问怎么在WIN7下运行
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-03-26 22:25
#include
#include
typedef struct
{
int x, y;
}item;
item move[4] = {{-2,1}, {-1,2}, {1,2}, {2,1}};
int map[5][9], sx, sy;
//判断是否在地图中,防止越界
int checkIn(int x, int y)
{
if(x >= 0 && x <= 4 && y >= 0 && y <= 8)
return 1;
return 0;
}
//输出最终结果
void output()
{
int i, j;
for(i = 0; i <= 4; i++)
{
for(j = 0; j <= 8; j++)
printf("%d ",map[i][j]);
putchar('\n');
}
printf("共计%d步。", map[0][8]);
}
//从x y开始寻找能否到达终点,能返回1,不能返回0,step表示当前的步数。
int findPath(int x, int y, int step)
{
int i;
map[x][y] = step;
//终点
if(x == 0 && y == 8)
{
output();
return 1;
}
//向右边4个方向前进
for(i = 0; i < 4; i++)
if(checkIn(x+move[i].x, y+move[i].y))
if(findPath(x+move[i].x, y+move[i].y, step+1) == 1)
return 1;
//四个方向均无法到达终点,回溯并返回0
map[x][y] = 0;
return 0;
}
int main(int argc, char ** argv)
{
memset(map, 0, sizeof(map));
printf("请输入起点\n");
scanf("%d,%d", &sx, &sy);
findPath(sx, sy, 1);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯