300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 【C语言小游戏】——老鼠走迷宫

【C语言小游戏】——老鼠走迷宫

时间:2018-08-29 05:06:42

相关推荐

【C语言小游戏】——老鼠走迷宫

一、效果图展示

我们来实现一个小游戏,就是老鼠走迷宫,效果图如下所示:

二、数据结构分析

首先,我们先来分析一下数据结构。

1、迷宫地图——它是有一个字符型二维数组并初始化构成的,障碍显示为‘#’,道路为‘’。

2、迷宫出口位置——通过确定出口的行下标、列下标,来标识迷宫的出口位置。

3、老鼠的位置——在地图中老鼠显示为‘&’,通过行下标变量、列下标变量来标识,并根据地图中的老鼠的位置进行初始化。

4、游戏时间——由记录时间的变量存储,time(NULL)函数可以获取系统的时间,系统会返回1970年1月1日 00:00:00 到现在一共用了多少秒 。

三、业务流程分析

分析完数据结构,我们再来看看整个程序的业务流程。

1、给定一个字符型二维数组并初始化,来存储迷宫地图。

2、定义记录老鼠位置的变量、获取游戏开始的时间和定义迷宫出口位置的变量。

3、定义一个死循环,终止条件为老鼠到达出口位置。

4、在每次显示地图时先清理屏幕。

5、显示地图,遍历字符二维数组。

6、检查老鼠是否到达出口,如果已到达就计算用时并显示,结束游戏。

7、获取方向键,根据获取到的方向键来判断老鼠的走向。

for(; ;)​{​//清理屏幕​system("clear");​//显示地图,遍历字符二维数组​//检查老鼠是否到达出口​{​//计算用时,并显示;​//结束游戏;​}​//获取方向键​switch(getch())​{​case 183:向上移动老鼠;break;​case 184:向下移动老鼠;break;​case 185:向右移动老鼠;break;​case 186:向左移动老鼠;break;​}​}

四、代码实现

分析完业务流程后,就是代码的实现了,根据业务流程一步步来就可以完成了。

#include <stdio.h>#include <getch.h>#include <stdlib.h>#include <time.h>int main(int argc,const char* argv[]){char map[20][20]={{'#','&','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#'},{'#',' ',' ',' ',' ','#',' ',' ',' ',' ',' ',' ',' ',' ','#',' ',' ',' ','#','#'},{'#','#','#','#',' ','#',' ','#','#','#',' ','#','#',' ','#',' ','#',' ',' ','#'},{'#',' ','#','#',' ','#',' ',' ',' ',' ','#',' ','#',' ','#',' ',' ','#',' ','#'},{'#',' ','#','#',' ','#',' ',' ','#',' ',' ',' ','#',' ','#','#',' ','#',' ','#'},{'#',' ','#','#',' ','#','#','#','#',' ','#',' ','#',' ','#',' ',' ','#',' ','#'},{'#',' ',' ',' ',' ',' ',' ',' ','#',' ','#',' ','#',' ','#',' ','#','#',' ','#'},{'#','#','#','#','#',' ','#',' ','#',' ','#',' ','#',' ','#',' ',' ','#',' ','#'},{'#',' ','#',' ','#',' ','#',' ','#','#','#',' ','#',' ','#','#',' ','#',' ','#'},{'#',' ',' ',' ','#','#','#',' ',' ',' ','#',' ','#',' ',' ',' ',' ','#',' ','#'},{'#',' ','#',' ','#',' ','#',' ','#',' ','#',' ','#',' ','#',' ','#',' ',' ','#'},{'#',' ','#',' ',' ',' ','#',' ','#',' ','#',' ','#','#','#','#','#',' ',' ','#'},{'#',' ','#','#','#',' ','#',' ','#',' ','#',' ','#',' ',' ',' ',' ',' ',' ','#'},{'#',' ','#',' ','#',' ','#',' ','#',' ','#',' ','#',' ','#','#','#','#',' ','#'},{'#',' ','#',' ',' ',' ','#',' ','#',' ','#',' ','#',' ','#',' ',' ',' ',' ','#'},{'#',' ','#',' ','#',' ','#','#','#',' ','#',' ','#',' ','#','#',' ','#',' ','#'},{'#',' ','#',' ','#',' ',' ',' ',' ',' ','#',' ','#',' ',' ',' ','#','#',' ','#'},{'#',' ','#','#','#','#','#','#','#','#','#',' ','#','#','#',' ',' ','#',' ','#'},{'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#',' ','#',' ','#'},{'#','#','#','#','#','#','#','#','#','#','#','#','#','#','#','#',' ','#','#','#'},};//定义记录老鼠位置的变量int mouse_row=0,mouse_col=1;//获取游戏开始的时间time_t start_time=time(NULL);//定义记录迷宫出口位置const int out_row=19,out_col=16;for(;;){//清理屏幕system("clear");//显示地图,遍历字符二维数组for(int i=0;i<20;i++){for(int j=0;j<20;j++)printf("%c",map[i][j]);printf("\n");}//检查老鼠是否到达出口{time_t present_time=time(NULL);if(mouse_row == out_row && mouse_col == out_col){printf("恭喜走出迷宫,用时:%lu秒\n",present_time-start_time);return 0;}}//获取方向键switch(getch()){case 183://向上移动{if(map[mouse_row-1][mouse_col]==' '){map[mouse_row][mouse_col]=' ';map[mouse_row-1][mouse_col]='&';mouse_row-=1;break;}elsebreak;}case 184://向下移动{if(map[mouse_row+1][mouse_col]==' '){map[mouse_row][mouse_col]=' ';map[mouse_row+1][mouse_col]='&';mouse_row+=1;break;}elsebreak;}case 185://向右移动:{if(map[mouse_row][mouse_col+1]==' '){map[mouse_row][mouse_col]=' ';map[mouse_row][mouse_col+1]='&';mouse_col+=1;break;}elsebreak;}case 186://向左移动{if(map[mouse_row][mouse_col-1]==' '){map[mouse_row][mouse_col]=' ';map[mouse_row][mouse_col-1]='&';mouse_col-=1;break;}elsebreak;}}}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。