基于C语言的走迷宫项目

基于C语言在Linux下实现的走迷宫项目

一、Windows下获取方向键:

1、导入 #include <conio.h>

2、通过getch()的返回值获取键盘上的键值

上:72 下:80 左:75 右:77

二、Linux下获取方向键:

1、在Windows中把getch.h文件放入共享文件夹中

2、把getch.h放入C标准库默认路径中,在Linux终端输入

sudo cp /media/sf_Share/getch.h /usr/include/

3、给getch.h加读权限

sudo chmod +r /usr/include/getch.h

获取getch()的返回值

上:183 下:184 左:186 右:185

三、项目分析:

数据分析

1、定义字符型的二维数组作为地图

2、定义记录角色位置变量

3、time(NULL) 获取1970-1-1 到现在过了多少秒

逻辑分析

进入死循环

1、清理屏幕、显示地图

system

clear

2、判断是否到达出口

如果是:程序结束

3、获取方向键并处理

上:183 下:184 左:186 右:185

前方是墙 不需要处理

前方是路 ’ ’ 可以移动

​ ①前方位置变成 ‘@’

​ ②原来位置变成 ’ ’

​ ③更新位置变量

代码的具体实现:
#include <stdio.h>
#include <stdlib.h>
#include <getch.h>
#include <time.h>

int main(int argc,const char* argv[])
{
	//	1、定义地图二维数组
	char map[10][10] = {
		{'#','#','#','#','#','#','#','#','#','#'},
		{'#',' ','#','#','#','#','#','#','#','#'},
		{'#','@','#','#',' ',' ',' ','#','#','#'},
		{'#',' ','#','#',' ','#',' ','#','#','#'},
		{'#',' ','#','#',' ','#',' ','#','#','#'},
		{'#',' ','#','#',' ','#',' ',' ',' ','#'},
		{'#',' ',' ',' ',' ','#','#','#',' ','#'},
		{'#','#','#','#','#','#','#','#',' ',' '},
		{'#','#','#','#','#','#','#','#','#','#'},
		{'#','#','#','#','#','#','#','#','#','#'},
		};
	//	2、定义记录角色位置变量
	int x = 2, y = 1;
	//	3、记录开始时间
	time_t start_time = time(NULL);
	for(;;)
	{
		//	清理屏幕
		system("clear");
		//	显示地图
		for(int i=0; i<10; i++)
		{
			for(int j=0; j<10; j++)
			{
				printf("%c ",map[i][j]);
			}
			printf("\n");
		}

		//	判断是否到达出口
		if(7 == x && 9 == y)
		{
			printf("游戏胜利!总用时%lu秒\n",
			time(NULL) - start_time);
			return 0;
		}

		//	获取方向键并处理
		switch(getch())
		{
			case 183:
				if(' ' == map[x-1][y])
				{
					map[x-1][y] = '@';
					map[x--][y] = ' ';
				}
				break;
			case 184:
				if(' ' == map[x+1][y])
				{
					map[x+1][y] = '@';
					map[x++][y] = ' ';
				}
				break;
			case 186:
				if(' ' == map[x][y-1])
				{
					map[x][y-1] = '@';
					map[x][y--] = ' ';
				}
				break;
			case 185:
				if(' ' == map[x][y+1])
				{
					map[x][y+1] = '@';
					map[x][y++] = ' ';
				}
				break;
		}
		
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值