数据结构课设-走迷宫游戏

一、需求分析

1.问题描述:

应用mfc编程,使程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。(1) 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;(2) 迷宫的墙足够结实,老鼠不能穿墙而过;(3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;(4)添加编辑迷宫功能,自会地图,可修改当前迷宫,修改内容:墙变路、路变墙;(5)在走不出迷宫的情况下,可以通过自动寻图走到粮仓。(6)可以保存当前自绘图片。

2.基本功能

(1)开始游戏(2)重新开始(3)保存图片(4)载入图片(5)自会地图(6)自动寻路(7)设置时间()游戏帮助 3.输入输出

数据类型:结构体,整形数据

输入:按照窗口、菜单提示按鼠标左键

移动老鼠位置,按键盘的上、下、左、右键

输出:可视化迷宫二、 概要设计

1.设计思路:

1).利用mfc可以把迷宫地图以及老鼠形象可变的导出来。

2).需要有墙有路,通过把迷宫地图划分成一个一个小方块,通过一个数组的值来判断是墙是路。(1表示墙0表示路)

3).利用栈,来存入当前位置,然后判断下一位置,存入栈中 (4).把每个数组元素对应一个按钮根据点击按钮,改变数组的值从而改变墙和路的转化。 2.数据结构设计:

本程序运用的逻辑结构是线性和存储结构为顺序。之所以采用本结构是因为,迷宫主要用到栈来储存当前位置,和判断下一位置,来入栈。

抽象数据类型线性表的定义如下:

ADT Stack{ 数据对象:D={ai| ai ∈ElemSet,i=1,2,3……,n,n≥0}

数据关系:R1={| ai-1,ai ∈D,i=1,2,3,……,n}

基本操作:

Initstack(&s)

操作结果:构造一个空栈s。

Stackempty(s)

初始条件:栈s已经存在。

操作结果:将s清为空栈。

Push(&s,e)

初始条件:栈s已经存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&s,&e)

初始条件:栈s已经存在,且非空。

操作结果:删除s的栈顶元素,并用e返回其值。

} ADT Stack

3.软件结构设计:

开始游戏void CMainFrame::OnStart():开始游戏。void CLabyrinthView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags):小老鼠键盘操。第一个参数表示哪个按键,接受上、下、左、右字符,判断调用哪个小老鼠图片,最后用脚印图片覆盖老鼠图片,达到朝前走,留下脚印的效果。(2)重新开始void CMainFrame::OnSysmap():系统地图。

void CLabyrinthView::OnSelfmap()、void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point):绘制地图函数。达到墙变路、路变墙的目的。(3)保存图片void CMainFrame::OnSave():保存地图。(4)载入图片void CMainFrame::OnOpen():载入地图。BOOL CLabyrinthView::OnEraseBkgnd(CDC* pDC):设置欢迎画面,载入图片。(5)自地图void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point): 墙变路,路变墙

(6)自动寻路void CLabyrinthView::OnAuto():为自动寻路函数。其重要调用Seqstack * CSkfction::init_Seqstack()、int CSkfction::Empty_Seqstack(Seqstack *s)、int CSkfction::Push_Seqstack(Seqstack *s,DataType x)、int CSkfction::Pop_Seqstack(Seqstack *s,DataType *x)函数。(7)设置时间int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct):到达在在状态栏中显示时间,调用了系统的函数SetTimer(1,1000,NULL); 第一个参数为对应时器的代号。在一个程序中,可能有多个SetTimer,在Ontime响应时,可以根据第一个参数来确定是哪一个记时器所引起的事件。第二个参数用于设置时间。 第三个参数为一个回调函数的指针,用NULL的话,系统会把

C我语言编程老鼠寻路,数据结构课设-走迷宫游戏.doc相关推荐

  1. java课程设计总结迷宫_java课设走迷宫(含代码)#优质参考

    java课设走迷宫(含代码)#优质参考 目录1设计目的1.1课程设计的目的2总体设计2.1设计思路2.2设计方法3关键技术4程序流程5主要源代码6. 运行结果及结论7.参考文献1.设计目的1.1课程设 ...

  2. 地大c语言课程设计题目,中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选.doc...

    中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选 数据结构 上机实习报告 实验题目:全国铁路运输网最佳经由问题 班级: 姓名: 学号: 完成日期:2017年4月25日 目录 课程设 ...

  3. 数据结构课设航班订票系统(C语言版)

    数据结构课设航班订票系统(C语言版) 课设要求 (1) 航班管理.每条航线设计出合理的信息,包括:起点和终点站名,航班号,成员额定,飞行周期.飞机型号.余票量.航班票价等 (2) 客户管理.订票的客户 ...

  4. 数据结构课设城市公交查询系统(C语言)

    公交线路图 一. 设计要求: 1.需要用到多个文件,例如文本文件,文件名stations.txt,保存站点信息,格式可以自行设计,例如:编号 站名.等等 2.设计公交线路所需的存储结构,将文件中的数据 ...

  5. 数据结构课设城市公交完整代码(c语言)

    以下是城市公交的完整代码,如果需要实验报告的可以点击下面的链接: 数据结构课设城市公交查询系统(C语言) 代码如下: #include <stdio.h> #include <str ...

  6. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

  7. 那些年,我的数据结构课设,现在满满的回忆!(现如今身处内卷之中,已经很难出现当初那份乐趣了)

    一.看到这个图标很有感觉 距离当初完成数据结构课设已经过去很久很久了,当初由于U盘失踪,也丢失了很多宝贵的东西,我也伤心的好久`(>﹏<)′!不过最近找到了失散多年的亲兄弟,打开U盘,感概 ...

  8. 数据结构课设+校园导航系统+西安邮电大学

    数据结构课设+校园导航系统+西安邮电大学 设计目的:在校园建设不断完善的现在,为在校学生提供合适的行走路径,为来访的客人提供各种服务的信息:对于这些问题,可用图结构来表示校园交通网络,编写程序完成校园 ...

  9. 《数据结构课设》弗洛伊德算法设计校园导游系统

    大二上学期的数据结构课设分享一下,具体题目如下: 题目27:"校园导游系统"的设计与实现 1.问题描述 设计一个校园导游系统,为来访的客人提供信息查询服务. 2.基本要求 (1)从 ...

  10. c语言课设报告仓库管理系统,c语言课设仓库管理系统.doc

    c语言课设仓库管理系统.doc 高级语言程序设计课程设计小型仓库管理系统题 目班 级学生学号学生姓名 同组成员 指导老师 提交时间 成 绩华南农业大学 信息学院一. 需求分析1 系统概述本系统用于小型 ...

最新文章

  1. ASP入门(十一)-Session小案例
  2. vb.net2019- 目录
  3. MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)
  4. FirstBird--项目流程
  5. mysql的concat函数_MySQL中concat函数(连接字符串)
  6. 【华为云技术分享】鲲鹏开发套件:让应用软件迁移调优So Easy
  7. python print输出字符串报错
  8. soft music
  9. vue-cli 脚手架开发环境搭建
  10. 互联网秒杀业务架构设计
  11. 独立成分分析(Indenpendent Components Analysis)斯坦福公开课讲义
  12. C#【必备技能篇】Win10 查看 DLL 中的函数
  13. 用html制作空心菱形的代码,javascript打印完整金字塔型_完整菱形_空心菱形_思路算法详解_js源代码...
  14. html编辑器有哪些
  15. 阿里云天池【Docker练习场】踩坑指南
  16. 初探DSO-SLAM并运行dso_ros
  17. APP被工信部下架了怎么办?重新上架流程分享
  18. c语言 json 请求_C语言处理json字符串
  19. ORACLE压力测试工具orion
  20. x1c2017 8G版 win linux的取舍纠结记录

热门文章

  1. 计算机桌面图标任意排列,教你win7电脑桌面图标怎么随意摆放
  2. java TIFF转JPG并压缩
  3. 13.1.X:ByteScout PDF Extractor SDK
  4. 个人网站Timonj(Personal website)
  5. github 提交消息的emoji表情符号规范
  6. 计算机基础:13、计算机CPU--运算器
  7. 虚拟机下Ubuntu打开摄像头是黑屏问题
  8. HTML之基本布局设计之三栏式、两栏式设计
  9. [原创]战国的杀人机器白起
  10. 如何在调试Window App时,触发 Suspending ,Resuming 等事件