logo资料库

迷宫游戏课程设计论文(有程序).docx

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
随机生成的迷宫小游戏
1 设计任务与要求
1.1 设计任务
1.2 问题分析
2 总体设计
3 详细设计
3.1 生成迷宫
3.2显示迷宫
3.3 人工探索
4系统测试结果
4.1 显示迷宫地图
4.2正确走出迷宫后
5 课程设计总结
6 参考文献 
附录
湖南商学院 软件综合课程设计 题 目 随机生成的迷宫小游戏 学生姓名 学 学 号 院 专业班级 指导教师 职 称 康思思 150910068 计算机与信息工程学院 电信 1502 梁英 教授 计 算 机 与 信 息 工 程 学 院 2017 年 7 月
湖 南 商 学 院 课 程 设 计 课程设计(实习)评审表 姓 名 康思思 学 院 计信学院 学 号 150910068 专业班级 电信 1502 题 目 随机生成的迷宫小游戏 评 审 意 见 评审成绩 指导教师签名 职称 评审时间 年 月 日
湖 南 商 学 院 课 程 设 计 课程设计(实习)作品验收表 题目 随机生成的迷宫小游戏 姓 名 康思思 参与人员 班 级 学 号 设计任务与要求: 电信 1502 150910068 喻盼 电信 1502 150910065 1. 一条通路的二元组(i, j)数据序列,(i, j)表示通路上某一点的坐标。 2. 用一种标志(如数字 8)在二维数组中标出该条通路,并在屏幕上输出二维数组。 3. 可以利用一个二维数组 maze[i][j]表示迷宫,其中 1<=i<=m,1<=j<=n。数组元素值为 0 表示 该位置是墙壁,不能通行;元素值为 1 表示该位置是通路。假定从 maze[1][1]出发,出口位 于 maze[m][n],移动方向可以是 8 个方向(东,东南,南,西南,西,西北,北和东北。 作品完成情况: 运行软件后,能很好的完成任务和要求,能对做的题目实行正确的回答,能满足 所出的题目要求,简单明了,且程序能人性化的提醒题目需求。 验收情况: 注:1. 除“验收情况”栏外,其余各栏均由学生在作品验收前填写。 2. “验收情况”栏由验收小组按实际验收的情况如实填写。 验收教师签名:___________ 年 月 日
湖 南 商 学 院 课 程 设 计 目录 1 设计任务与要求 ......................................... 1 1.1 设计任务 .......................................... 1 1.2 问题分析 ......................................... 1 2 总体设计 ............................................... 2 3 详细设计 ............................................... 4 3.1 生成迷宫 .......................................... 4 3.2 显示迷宫 .......................................... 5 3.3 人工探索 .......................................... 7 4 系统测试结果 .......................................... 8 4.1 显示迷宫地图 ...................................... 8 4.2 正确走出迷宫后 .................................. 9 5 课程设计总结 ........................................... 9 6 参考文献 .............................................. 10 附录 .................................................... 10
湖 南 商 学 院 课 程 设 计 随机生成的迷宫小游戏 1 设计任务与要求 1.1 设计任务 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无 顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子 仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。 对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老 鼠经过多次试验终于得到它学习走通迷宫的路线。设计一个计算机程序对任意设 定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 (1)一条通路的二元组(i, j)数据序列,(i, j)表示通路上某一点的坐标。 (2)用一种标志(如数字 8)在二维数组中标出该条通路,并在屏幕上输 出二维数组。 (3)可以利用一个二维数组 maze[i][j]表示迷宫,其中 1<=i<=m,1<=j<=n。 数组元素值为 1 表示该位置是墙壁,不能通行;元素值为 0 表示该位置是通路。 假定从 maze[1][1]出发,出口位于 maze[m][n],移动方向可以是 8 个方向(东, 东南,南,西南,西,西北,北和东北。 1.2 问题分析 这个简单的迷宫游戏使用二维数组来模拟迷宫,将迷宫的左上角作入口,右 下角作出口,求出从入口点到出口点的一条通路,作为线性结构的典型应用,大 多用非递归方法实现。用“!”来模拟小人,通过'q', 'w', 'e', 'a', 'd', 'z', 'x', 'c',来控 制小人的上下左右共八个方向的运动。生成迷宫是在 0 和 1 中生成随机数,1 代 表可走,0 代表墙。迷宫的大小为 N×N,N 预定义为常数,修改 N 的值可以改 变迷宫的大小,只要不超过屏幕显示范围,而程序不必做修改。 这个程序主要的部分就是判断要走的下一步是不是符合一些要求,即:是否 有出界,是否走的位置是墙,是否到达终点。这部分在函数 peoplefind()中实现 1
湖 南 商 学 院 课 程 设 计 的,只用到了一个 switch 语句。做到这些函数也就写出来了,就是有些不足, 比如说生成的迷宫不一定走得通。 2 总体设计 第一个模块—主函数 main()的功能是:选定后调用迷宫生成函数,接着调用 迷迷宫显示函数,然后调用人工探索函数,探索完毕进行结果处理,最后关闭系 统,程序结束。 第二个模块—迷宫生成函数 maprand()的功能是:用数组 g 表示一个迷宫,要 随 机生成迷宫,数组元素的值利用随机函数生成 0 或 1 的数。 第四个模块—迷宫显示函数 prmap()的功能:根据数组 g 的值输出迷宫图, 利用两重循环语句可以完成迷宫图的显示。 第六个模块—人工探索 peoplefind()的功能:首先输出迷宫图以及人工控制 操作图示,探索物!出现在左上角,采用人工控制 8 个方向的移动,由于是 8 个方向,用光标键只能控制 4 个方向,为了统一采用了临近的 8 个字符 Q W E A D Z X C 代表 8 个方向,按了字符后,对应方向不是墙壁,可以 将探索物!移到相应的位置,按回车表示结果人工操作。由于探索物不停的移动, 要在新位置显示,可以调用 switch(a) &x,&y,n 完成参数 x 和 y 代表所在的行 坐标和列坐标,a 代表所选的方向,根据 a 的值,将 x 和 y 进行相应的变化。如果 此时 g 数组元素的坐标是出口则探索成功,否则失败。 程序框图如下图 1: 2
湖 南 商 学 院 课 程 设 计 开始 预定义 主函数 main() 随机生成迷宫 maprand() 调用人工探索 peoplefind() 根据用户命令更新地图 是否到达右下 角? N Y Y 游戏胜利 图 1 程序框图 3
湖 南 商 学 院 课 程 设 计 3 详细设计 3.1 生成迷宫 迷宫地图用一个二维数组 m[N][N](N=100)来存放。 流程图如图 2: 开始 定义函数 For 循环 i,j 确定 g[i][j]的表达式 结束 图 2 生成迷宫程序流程图 程序如下: void maprand() { srand(time(NULL)); for (int i=0; i
分享到:
收藏