搜索
您的当前位置:首页正文

数字迷宫T

来源:六九路网
数字迷宫-阶段项目2(T项目)

第一部分 案例描述

案例目的

本案例为实现动态的刷新Dos界面,使用用户控制头像“消灭”窗口中出现的数字(无固定顺序)的游戏,来使学员加深对一维数组、二维数组、循环语句、选择程序设计以及相关系统函数的使用。

案例难度

★★★★

案例覆盖技能点

a) 选择程序设计 b) 循环程序设计

c) 用户、屏幕窗口的输入输出 d) 相关系统函数 e) 一维、二维数组

推荐案例完成时间

4天

适用课程和对象

C语言案例(T阶段)

第二部分 需求和开发环境

使用技术和开发环境

Microsoft Visual C++ 6.0

案例需求

本案例要求制作一个《数字迷宫》的游戏,该游戏的玩法描述为:

1、 系统主要地图为固定模式

2、 地图内部包含墙体、走廊、阿拉伯数字(1~7)、玩家头像(1个)四种不同内容 3、 用户通过上、下、左、右按键来控制玩家头像在地图范围内的走动 4、 在玩家走动过程中,碰撞墙壁时,该步的走动无效,玩家头像原地不变 5、 玩家允许在设计走廊内部进行走动

6、 玩家头像遇到阿拉布数字时,数字消失,并且对玩家走动无影响

7、 玩家头像遭遇所有数字之后(地图上无阿拉布数字),该局游戏结束,并自动开始

下一局游戏

8、 在某一局游戏中,游戏走廊、墙体与其他游戏相同,但数字位置会随机产生 9、 阿拉伯数字产生在走廊内而非墙体上

10、 在玩家游戏过程中按下Esc键,游戏无条件退出。 11、 在玩家未使用Esc键时,程序正常运行

程序运行截图

1、 程序初始状态

2、 玩家运行中

3、 退出

数字迷宫工作原理

1. 本程序分为初始——玩家运行——重启一局——结束四个阶段

a) 初始化阶段 i. ii. iii.

程序当中存在一18*24大小的固定地图数组

该数组以0/-1分别标识程序地图当中的“墙体”以及“走廊” 通过随机函数在走廊中产生1~7阿拉伯数字,并且将该系列数字写入二维数组的相应位置当中,对-1(走廊)进行覆盖 iv. v.

产生玩家位置:数组的(1,1)处

使用循环语句遍历打印出数组元素,元素包括 1. 墙体(0):■ 2. 走廊(-1): 空格*2

3. 数字(1~7):数字本身+空格*1 4. 玩家头像:\\1 即:+空格*1

b) 玩家运行阶段 i. ii.

玩家使用上下左右键进行头像控制

与墙体碰撞时,走动无效,原地不动(通过玩家头像位置标示与数组内部数据是否为墙体(0)来判断) iii.

为一般走廊时,玩家原头像位置清空为双空格(通过玩家头像位置标示与数组内部数据是否为走廊(-1)来判断),玩家当前位置输出玩家头像,并更新玩家头像位置全局变量。 iv.

为数字时(通过玩家头像位置标示与数组内部数据是否为数字(>0)来判断),该数字消失,玩家原位置头像消失,新位置出现玩家头像,并将数组内消失数字位置置为走廊(-1), 并更新玩家头像位置全局变量。 v.

每走动一次系统遍历数组元素,判断数字(>0)多少,当数字存在数量>0时,该局继续,=0时,进入重启一局步骤。

c) 重启一局 i.

重复初始化阶段(注意要移动头像到(1,1)位置)

d) 结束程序

i. 用户点击Esc或强行关闭应用程序时,程序无条件退出。

第三部分功能点介绍

头文件引用列表

头文件名 #include #include 功能简述 使用一般输入输出函数 使用getch函数达到输入数据不敲回车进行下步计算功能 #include #include \"windows.h\" 使用time(int)函数 使用光标移动函数对光标进行编码定位 系统函数使用列表

函数名称 getch(); printf srand(); time(NULL); 功能简述 设置系统rand函数随机引资 以时间作为随机因子产生不重复的随机数,提高程序效率 rand() GetStdHandle GetLastError(); 得到随机数 得到该程序HANDLE的函数 得到系统最近错误编号函数 SetConsoleCursorPosition(Handle, 代码设置系统光标位置函数 {x,y});

公共变量列表

变量名称 初始值 功能简述 地图数组,0表示墙体,-1表示走廊 int code[17][24] 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,-1,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0, 0,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,-1,0,0,0,0,0,-1,-1,-1,0,0, 0,-1,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,-1,0,0,0,0, 0,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,0,-1,0,-1,-1,-1,-1,-1,-1,-1,0,0, 0,-1,0,0,-1,0,-1,0,0,0,0,-1,0,-1,-1,-1,0,0,0,0,0,0,0,0, 0,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0,0,-1,0,0,0,0,0,0,0,0, 0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0, 0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,0,0,-1,0,0,0,0, 0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,0,0,-1,0,0,0,0, 0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,-1,-1,-1,-1,0,-1,-1,0, 0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,-1,0,0, 0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,-1,0,0, 0,0,-1,-1,-1,-1,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0, 0,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0, 0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, }; int postionX, postionY postionX=1; postionY=1; 玩家的初始位置

函数功能列表

函数名称 void main() void SetCode(int num); 功能简述 程序接口函数,负责程序整体运行 该函数通过传入的num值来判断并输出为:■,空格*2,或者数字本身 void SetWindow(); 生成地图主体函数:遍历公共数组,在位置部位(1,1)时,调用SetCode函数,并在(1,1)位置输出玩家头像 void SetNum(); 程序初始化时,用于使用随机函数在数组“走廊”位置生成1~7的阿拉伯数字 void Begin(); 初始化主体函数,设置玩家头像初始位置,调用SetNum函数 void LeftKey(); void UpKey(); void DownKey() void RightKey(); int CheckLeftNum(); void GoToXY(int x, int y); 该函数判断数组内剩余的数字(>0)数量,返回该数量 该函数用于在x,y位置输出用户头像 玩家按下,上下左右按键时,分别调用的函数,该函数可判断玩家是否为被墙体阻挡、正常行走、“吃”掉数字三种状态,并改变玩家头像的位置。 void GoToXYSpace(int x, int 该函数用于在x,y处输出空格*2,用于用户走动时,消除y);

之前位置处头像。 第四部分 考核评价点(系统验收标准)

序号 1 2 功能列表 功能描述 分数 30 50 说明 必做 必做 难度 ★★ ★★★★ 正确创建系统原始地图 正确完成用户移动监测 3 4 7 正确完成数字剩余检测 正确完成系统重新开始 系统退出 10 10 必做 必做 必做 ★★ ★

因篇幅问题不能全部显示,请点此查看更多更全内容

Top