收藏 分享(赏)

何家伟 电脑鼠迷宫算法仿真程序的设计.doc

上传人:dreamzhangning 文档编号:2691590 上传时间:2018-09-25 格式:DOC 页数:42 大小:1.16MB
下载 相关 举报
何家伟 电脑鼠迷宫算法仿真程序的设计.doc_第1页
第1页 / 共42页
何家伟 电脑鼠迷宫算法仿真程序的设计.doc_第2页
第2页 / 共42页
何家伟 电脑鼠迷宫算法仿真程序的设计.doc_第3页
第3页 / 共42页
何家伟 电脑鼠迷宫算法仿真程序的设计.doc_第4页
第4页 / 共42页
何家伟 电脑鼠迷宫算法仿真程序的设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、湖 南 科 技 大 学毕 业 设 计( 论 文 )题目 电脑鼠迷宫搜索算法仿真程序的设计作者 何家伟学院 物理与电子科学学院专业 电子信息科学与技术学号 0908020102指导教师 李志坚二一三 年 五 月 二十五 日毕业设计(论文)任务书物理学 院 电子 系(教研室)系(教研室)主任: (签名) 年 月 日学生姓名: 何家伟 学号: 0908020102 专业: 电子信息科学与技术 1 设计(论文)题目及专题: 电脑鼠迷宫搜索算法仿真程序的设计 2 学生设计(论文)时间:自 2013 年 1 月 5 日开始至 2013 年 5 月 25 日止3 设计(论文)所用资源和参考资料:资源:计算机

2、及相关软件、因特网、图书馆藏书及期刊、中国知网等。1 林国恩.电脑鼠的设计与实作D. 台湾龙华科技大学,2010.2 朱诗生,张惠珍 .人机交互软件界面设计J.信息技术,2009(05):36-39.3 孙鑫.VC+ 深入详解M.北京:电子工业出版社,2006:142-187.4 (美) 柯尼汉,里奇著,徐宝文译 .c 程序设计语言M.机械工业出版社.2001:1-232.等4 设计(论文)应完成的主要内容:(1)分析电脑鼠的软件系统,讨论将电脑鼠迷宫搜索算法的仿真原理。(2)使用 VC 编程环境完成电脑鼠迷宫搜索算法仿真程序的设计。(3)实现两套迷宫搜索算法,然后用这两套算法对迷宫搜索算法仿

3、真程序进行测试。(4)分析总结本设计中存在的问题,并提出可以改进的地方。5 提交设计(论文)形式(设计说明与图纸或论文等)及要求:提交设计形式:设计图纸和论文。(1)要求认真、独立、按时地完成毕业设计的工作。(2)论文结构合理、层次分明、论据充分、逻辑严密、力求创新。(3)按照学校规定的论文(设计)要求和撰写规范进行论文的撰写。6 发题时间: 2013 年 1 月 5 日指导教师: (签名)学 生: (签名)湖 南 科 技 大 学毕业设计(论文)指导人评语主要对学生毕业设计(论文)的工作态度,研究内容与方法,工作量,文献应用,创新性,实用性,科学性,文本(图纸)规范程度,存在的不足等进行综合评

4、价指导人: (签名)年 月 日指导人评定成绩: 湖 南 科 技 大 学毕业设计(论文)评阅人评语主要对学生毕业设计(论文)的文本格式、图纸规范程度,工作量,研究内容与方法,实用性与科学性,结论和存在的不足等进行综合评价评阅人: (签名)年 月 日评阅人评定成绩: 湖 南 科 技 大 学毕业设计(论文)答辩记录日期: 学生: 学号: 班级: 题目: 提交毕业设计(论文)答辩委员会下列材料:1 设计(论文)说明书 共 页2 设计(论文)图 纸 共 页3 指导人、评阅人评语 共 页毕业设计(论文)答辩委员会评语:主要对学生毕业设计(论文)的研究思路,设计(论文)质量,文本图纸规范程度和对设计(论文)

5、的介绍,回答问题情况等进行综合评价答辩委员会主任: (签名)委员: (签名)(签名)(签名)(签名)答辩成绩: 总评成绩: 摘 要一台优秀的电脑鼠,必须要有一套优秀的迷宫搜索算法,但迷宫搜索算法的设计作为电脑鼠设计中的重要环节,往往需要耗费大量的时间用于算法的调试上。为了提高迷宫搜索算法设计和调试的效率以减少设计时间,采用模块化设计的方法和数学建模的方法,通过模拟迷宫环境和电脑鼠,实现了一个迷宫搜索算法仿真程序。迷宫搜索算法仿真程序除了实现仿真功能外,还实现了迷宫地图的编辑和迷宫搜索算法的导入等功能。为了验证迷宫搜索算法仿真程序的可行性,基于迷宫搜索算法仿真程序的接口实现了两套迷宫搜索算法,并

6、用这些算法做了一系列的仿真试验。试验的结果显示,两套迷宫搜索算法都能顺利地驱使模拟电脑鼠找到迷宫终点,而且在仿真过程中,两套迷宫搜索算法搜索在仿真程序中的用时比在电脑鼠中实际运行的用时少了 90%以上。从试验结果得到的结论是:通过使用迷宫搜索算法仿真程序来提高迷宫搜索算法设计的效率是完全可行的。迷宫搜索算法仿真程序可以作为电脑鼠设计的辅助设计软件,也可以作为迷宫搜索算法的研究平台。关键词:电脑鼠;迷宫搜索算法;仿真;多线程ABSTRACTAn excellent maze searching algorithm is necessary for a micromouse. However, a

7、s an important part in micromouse design the algorithm of maze searching always spend a lot of time on testing. In order to improve the efficiency on algorithm designing and testing, I try to use the modular designing method and the mathematical modeling method to build an algorithm emulation progra

8、m. This program can simulate a maze environment and a micromouse, so we can base on this program to design the algorithm of maze searching . In addition to the emulation function, it also realized the function of maze editing and algorithm importing inside of the emulation program. In order to prove

9、 if the emulation program is feasible, two algorithms of maze searching had been built and a series of emulating experiments had been made based on the interface of the emulation program. Experimental results showed that both two algorithms can successfully finish the micromouse maze searching, what

10、s more, the simulation time was less than the actual running time 10%. So the conclusion is: the emulation program can significantly increase the efficiency when designing algorithm of maze searching. The maze searching algorithm emulation program can be used as an aids tool on micromouse designing,

11、 or as research platform for maze searching algorithm.Keywords: micromouse; algorithm for maze searching; simulating; multithreading湖南科技大学本科生毕业设计(论文)目 录第一章 绪 论 11.1 选题背景 11.2 研究目的 11.3 研究意义 1第二章 迷宫搜索算法仿真程序的设计方案 22.1 迷宫搜索算法仿真的原理 22.2 系统框图 22.2.1 系统总框图 22.2.2 动态仿真器 32.2.3 迷宫搜索算法接口 32.2.4 人机交互界面 42.2.5

12、 迷宫地图编辑器 42.3 开发环境 42.3.1 VC6.0 集成开发环境 42.3.2 EasyX 图形库 4第三章 迷宫搜索算法仿真程序的设计 63.1 多线程的实现 63.2 人机交互界面的设计 73.2.1 人机交互总界面 73.2.2 按钮控件 73.2.3 用户事件的检测 103.2.4 状态机 123.3 迷宫地图编辑器的设计 143.3.1 迷宫地图的表示 143.3.2 迷宫隔墙的绘制 143.3.3 迷宫隔墙的设置 153.3.4 迷宫地图的保存 163.3.5 迷宫地图的载入 163.4 动态仿真器的设计 173.4.1 电脑鼠的绝对方向和相对方向 173.4.2 模拟

13、电脑鼠的显示 17湖南科技大学本科生毕业设计(论文)i3.4.3 模拟电脑鼠结构体的定义 183.4.4 模拟电脑鼠的运动控制 183.4.5 迷宫信息的获取 193.5 迷宫搜索算法接口的设计 223.5.1 DLL 接口 223.5.2 接口的数据协议 23第四章 迷宫搜索算法仿真程序的测试 244.1 测试方案 244.1.1 测试方案 244.1.2 迷宫搜索算法的选择 244.1.3 迷宫地图的选择 244.2 测试结果 254.2.1 左手法则迷宫搜索算法的测试结果 254.2.2 右手法则迷宫搜索算法的测试结果 274.3 测试结论 30第五章 总结 31参考文献 32致 谢 3

14、3湖南科技大学本科生毕业设计(论文)- 0 -第一章 绪 论1.1 选题背景迷宫搜索算法的设计和调试在电脑鼠的整体设计中耗费最多时间 15。在传统的电脑鼠整体设计方法中,迷宫搜索算法的设计和调试需要基于电脑鼠硬件进行,由于电脑鼠实际的运行速度较低,迷宫的面积较大,所以对迷宫搜索算法进行调试是非常耗费时间的 6,7。而且在迷宫搜索算法调试的过程中,电脑鼠往往会因为受到迷宫地面上的灰尘、环境的光线以及电脑鼠底层软硬件的影响而出现运行错误,从而使得调试被打断重来,造成了时间上的浪费。1.2 研究目的为解决迷宫搜索算法在设计和调试上耗费大量时间的这一问题,本课题着手设计一个可以对迷宫搜索算法进行仿真的

15、程序。该迷宫搜索算法仿真程序通过模拟出迷宫环境和电脑鼠,为迷宫搜索算法提供一个理想化的运行环境。仿真时,迷宫搜索算法驱动着模拟电脑鼠在理想的模拟迷宫环境中运行,有效地避免了在实际电脑鼠上调试的过程中所受到的影响。由于在仿真程序中的模拟电脑鼠可以以实际电脑鼠不可能达到的速度运行,所以可以大大地减少迷宫搜索算法的运行时间。除此之外,在迷宫搜索算法仿真程序中,可以方便地输出迷宫搜索算法的一些过程数据,为迷宫搜索算法的调试提供便利。1.3 研究意义虽然很多电脑鼠设计者都在积极地解决迷宫搜索算法在设计和调试上耗费大量时间的问题,譬如为电脑鼠增加无线数据传输模块用于在线监控电脑鼠内部的状态。这样的方法的确

16、能够方便错误原因的查找,减少调试的时间,但是这些方法并不能从根本上解决由于外界因素的干扰和电脑鼠自身的局限所造成的迷宫搜索算法设计和调试耗时间的问题。迷宫搜索算法仿真程序的出现,则可以从根本上解决这个问题,极大地提高了迷宫搜索算法设计和调试的效率,减少了设计和调试时间。因此,本迷宫搜索算法仿真程序及其实现思路可以推广到电脑鼠走迷宫竞赛中,这样参赛者便可以有更充裕的时间用于优秀迷宫搜索算法的设计以及电脑鼠的其它设计阶段上。与此同时,本迷宫搜索算法仿真程序还可以作为电脑鼠迷宫搜索算法研究者的一个理想的研究平台。湖南科技大学本科生毕业设计(论文)- 1 -第二章 迷宫搜索算法仿真程序的设计方案2.1

17、 迷宫搜索算法仿真的原理迷宫搜索算法仿真是迷宫搜索算法仿真程序的核心功能。迷宫搜索算法仿真程序的仿真功能是根据电脑鼠软件系统的结构实现的。电脑鼠的软件系统整体分为三部分 5,分别是迷宫信息采集算法、运动控制算法和迷宫搜索算法。在电脑鼠的软件系统中,迷宫信息采集算法负责获取电脑鼠当前所在迷宫单元中环境信息,运动控制算法负责控制电脑鼠的运动部件实现基本的直行和转弯动作,而迷宫搜索算法则负责收集迷宫信息,并根据已知的迷宫信息指示运动控制算法控制电脑鼠在迷宫中运动。图 2.1 为电脑鼠的软件系统框图。迷宫搜索算法迷宫信息采集算法 运动控制算法图 2.1 电脑鼠软件系统框图根据电脑鼠软件系统的运行原理,

18、迷宫搜索算法仿真程序要实现仿真功能,需要实现迷宫信息的获取和模拟电脑鼠的运动控制两个功能。仿真过程中,迷宫搜索算法仿真程序从模拟迷宫环境中获取迷宫搜索算法所需的迷宫信息,然后将迷宫信息传递给迷宫搜索算法,当获取到迷宫搜索算法返回电脑鼠的动作指令后,仿真程序则根据动作指令控制模拟电脑鼠执行对应的动作。2.2 系统框图2.2.1 系统总框图迷宫搜索算法仿真程序的主要功能模块包括动态仿真器、迷宫搜索算法接口、人机交互界面和迷宫地图编辑器 8。动态仿真器在迷宫搜索算法仿真程序中作为整个程序的核心存在。迷宫搜索算法接口的作用是连接动态仿真器和迷宫搜索算法,其位于动态仿真器和迷宫搜索算法之间。为了方便对迷

19、宫搜索算法进行仿真,围绕动态仿真器实现人机交互界面和迷宫地图编辑器,分别负责响应用户的鼠标动作和设置迷宫地图。由于地图编辑器需要接受用户的动作来完成地图的编辑工作,所以将迷宫地图编辑器作为人机交互界面的一个子功能来实现。图 2.2 是本迷宫搜索算方法仿真程序的总框图。湖南科技大学本科生毕业设计(论文)- 2 -共享变量动态仿真器 人机交互界面迷宫搜索算法接口迷宫搜索算法迷宫地图编辑器主线程 子线程图 2.2 迷宫搜索算法仿真程序的总框图在仿真过程中,动态仿真器运行的同时还需要运行人机交互界面来实时地监控和响应用户的动作。要实现动态仿真器和人机交互界面同时运行这一功能要求,传统的单线程程序设计方

20、法会使程序内部流程结构变得复杂,这让程序设计变得困难,与此同时,复杂的程序流程结构对今后的程序调试和功能增添诸多不便。为解决单线程设计所带来的问题,使用多线程程序设计的方法 9,10,将动态仿真器和人机交互界面分别设计于两个不同的线程中,两线程之间的通信则通过共享变量来实现。2.2.2 动态仿真器动态仿真器作为迷宫搜索算法仿真程序的核心,负责对迷宫搜索算法进行仿真。动态仿真器需要实现三个功能,除了为迷宫搜索算法获取迷宫信息和根据迷宫搜索算法的指令控制模拟电脑鼠运动这两个功能之外,动态仿真器另外一个功能是将迷宫搜索算法在运行过程中产生的过程数据显示出来。在动态仿真器中,迷宫信息使用相关的图像处理

21、函数获取,模拟电脑鼠的运动通过动画方式显示,而过程数据通过文字输出函数输出。2.2.3 迷宫搜索算法接口本设计中,迷宫搜索算法仿真程序和迷宫搜索算法是分开实现的。迷宫搜索算法作为外部动态库实现,当被加载到迷宫搜索算法仿真程序内部时,迷宫搜索算法将作为一个函数被动态仿真器调用。为保证迷宫搜索算法能被正确调用,在两者之间规定一套调用接口,该接口规定了迷宫搜索算法的函数格式以及通信协议。动态仿真器与迷宫搜索算法之间的协议分为两部分,一部分是动态仿真器到迷宫搜索算法的数据协议,用于规范迷宫隔墙信息的表示方法,另外一部分是迷宫搜索算法到动态仿真器的指令协议,用于规范动作指令的表示方法。编写迷宫搜索算法的

22、代码时,需要严格按照迷宫搜索算法接口的规范来编写,否则编译生成的迷宫搜索算法将不能成功地被调湖南科技大学本科生毕业设计(论文)- 3 -用。2.2.4 人机交互界面人机交互界面是迷宫搜索算法仿真程序与使用者之间的桥梁。人机交互界面内部实现的模块有两个,分别是与用户交互的按钮控件和控制程序工作状态的状态机 11,12。按钮控件可以获取用户的鼠标事件,如鼠标的移动和点击等。获取到特定的鼠标事件后,控件能实现动画效果,如按钮被按下或恢复弹起。按钮被按下后,会产生一个与按钮相对应的指令,该指令将作为状态机的输入信号,用于改变迷宫搜索算法仿真程序的工作状态。状态机用于控制迷宫搜索算法仿真程序的工作状态的

23、转移。人机交互界面的状态机有 7 个工作状态,分别是初始状态、地图编辑状态、地图保存状态、地图载入状态、迷宫搜索算法载入状态、迷宫起点设置状态以及迷宫搜索算法仿真状态。从某个工作状态转移到另外一个工作状态,需要满足这两个状态间的特定转移条件,而且两状态间的两个转移方向的转移条件,可以根据不同的功能要求有不同的设置。状态转移时,退出状态前有退出动作,进入状态后有进入动作,退出动作和进入动作也要视乎功能而定。人机交互界面的转移关系和转移动作将会在第三章人机交互界面的实现中详尽介绍,所以此处暂时不介绍。2.2.5 迷宫地图编辑器迷宫搜索算法仿真程序中,模拟迷宫通过二维图形显示,迷宫地图编辑器的功能就

24、是编辑二维的迷宫地图。迷宫地图编辑器的工作原理如同绘图器,通过鼠标点击特定的位置即可在该位置下绘制或擦除迷宫隔墙。完成迷宫地图设置后,可以将该迷宫地图以图片形式保存,被保存的迷宫地图也可以被载入到迷宫搜索算法仿真程序中用于算法的仿真。2.3 开发环境2.3.1 VC6.0 集成开发环境迷宫搜索算法仿真程序以及迷宫搜索算法均使用使用 VC6.0 集成开发环境进行开发设计。VC6.0,全称 Visual C+ 6.0,是由微软公司开发的一款功能强大的可视化软件开发工具,兼容标准的 C/C+程序开发 13,14。迷宫搜索算法仿真程序使用到 VC6.0的控制台(Win32 Console Applic

25、ation)开发框架实现,而迷宫搜索算法使用动态链接库(Win32 Dynamic-Link Library)的框架实现 15。迷宫搜索算法仿真程序通过载入动态链接库 DLL 的方式来载入迷宫搜索算法。2.3.2 EasyX 图形库湖南科技大学本科生毕业设计(论文)- 4 -迷宫搜索算法仿真程序中需要使用图形功能。EasyX 图形库提供的基本图形函数满足本设计的功能需求 16,因此选择使用 EasyX 图形库进行程序开发。EasyX 图形库是针对 VC 开发环境的一套绘图库,提供了基本的绘点、绘线、图像截取、图像载入、像素颜色获取以及鼠标事件获取等基本功能。EasyX 图形库相比于 VC6.0

26、 的 MFC 图形库,具有接口简单、使用方便的优点。EasyX 图像库的开发者为图形库提供了一个详细的使用说明文档,涵括了常量的定义、结构体的定义、函数的定义以及每一个函数的示例程序,初学者根据使用说明文档可以很快地掌握图形编程的方法。湖南科技大学本科生毕业设计(论文)- 5 -第三章 迷宫搜索算法仿真程序的设计3.1 多线程的实现在 VC6.0 中,要实现多线程需要创建子线程函数以及在主线程中调用子线程函数。子线程函数需要使用关键字_stdcall 修饰,子线程函数的返回数据类型为双字DWORD,输入参数类型为 LPVOID lpParameter13,17。子线程函数的示例代码如下:DWO

27、RD _stdcall SonProc(LPVOID lpParameter)/*此处输入本线程的功能代码*/return 0;主线程中,启动子线程需要使用到线程创建函数 CreateThread()。CreateThread 函数是 WindowsAPI 中提供的建立新线程的函数 13,14,它的原型如下:HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD

28、 dwCreationFlags, LPDWORD lpThreadId);lpThreadAttributes 用于设置线程安全性,填写 NULL 参数表示使用默认安全性。dwStackSize 用于设置子函数初始栈的大小,如果该参数为 0,则默认将使用与调用该函数的线程相同的栈空间大小。lpStartAddress 是指向线程函数的 指针。lpParameter 为向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为 NULL。dwCreationFlags 为线程标志。lpThreadId 用于保存新线程的 ID。本设计中,人机交互界面在子线程中实现。子线程的函数声明为:DWO

29、RD _stdcall UserActionProc(LPVOID lpParameter);由于需要实现的线程功能不多,线程安全性使用默认值即可,对于栈的使用也没有特殊要求,同样使用默认值即可,因此在主线程中添加创建子线程的代码为:CreateThread(NULL,0,UserActionProc,NULL,0,NULL);湖南科技大学本科生毕业设计(论文)- 6 -3.2 人机交互界面的设计3.2.1 人机交互总界面人机交互界面包括三个部分,分别为迷宫地图部分、按钮控件部分和仿真信息显示部分。图 3.1 为迷宫搜索算法仿真程序总界面的效果图。整个显示界面分为三部分,左方正方形部分显示迷宫

30、地图,右方上半部分显示按钮控件,右方下半部分显示仿真信息显示。图 3.1 迷宫搜索算法仿真程序的界面3.2.2 按钮控件按钮是人机交互界面中最直观的的部件,是使用者与程序之间交互的重要窗口。由于用到的 EasyX 图形库不包含直接生成按钮的函数 16,所以要基于基本的绘图函数来实现一套按钮。按钮的主要属性包括有按钮的边界坐标、识别号、说明文字和状态 11。为了方便管理各按钮,创建了一个基本的按钮结构体来存储按钮的各个属性 17,该结构体的原型如下:struct BUTTONchar text;int ID;int state;int left;int top;int right;int bot

31、tom;按钮结构体中,text 为按钮的说明文字,ID 为按钮的识别号,state 为按钮的状态,湖南科技大学本科生毕业设计(论文)- 7 -left、top 、right 和 bottom 分别为按钮实体左部 x 坐标、上部 y 坐标、右部 x 坐标和下部 y 坐标。为体现按钮的动画,需要实现按钮凸出和凹下的两种显示效果 11。在始状态下,按钮显示的是凸出效果,当用户点击按钮,按钮切换到凹下效果。在按钮凹下的状态下,当用户释放鼠标按键,按钮又重新恢复到凸出效果。按钮凸出和凹下的两种效果通过两种边框阴影来实现。阴影效果使用到颜色设置函数 setcolor()和画线函数 line(),setco

32、lor()函数的原型为 void setcolor(COLORREF color),line() 函数的原型为 void line(int x1,int y1,int x2,int y2)16。凸出效果如图 3.2 中的子图 a 所示,上边和左边使用白色来表现反光效果,下边和右边使用深灰色来表现阴影效果。实现代码如下:void button_up(int left, int top, int right, int bottom)setcolor(0xfffeff);line(left , top , right , top);line(left , top , left , bottom);s

33、etcolor(0x96a5a8);line(right , top , right , bottom);line(left , bottom , right , bottom);凹下的效果如图 3.2 中的子图 b 所示,上边和右边使用深灰色阴影表现,下边和右边用白色表现反光效果。实现代码如下:void button_down(int left, int top, int right, int bottom)setcolor(0x96a5a8);line(left , top , right , top);line(left , top , left , bottom);setcolor(0xfffeff);line(right , top , right , bottom);line(left , bottom , right , bottom);a) 凸出效果 b) 凹下效果图 3.2 按钮

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报