课程设计---猫抓老鼠的模拟.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息科学与技术学院 程序设计基础课程设计报告 题目名称: 猫抓老鼠的模拟 目录 1 课程设计题目与要求 3 1.1设计题目 3 1.2设计要求 3 2 总体设计 4 3 详细设计 5 3.1数据结构设计 5 3.2主模块设计 5 4 运行结果 8 5 课程设计总结 10 1 课程设计题目与要求 1.1设计题目 猫抓老鼠的模拟 1.2设计要求 1) 设计一个迷宫:猫,老鼠的位置随机生成; 2) 猫,老鼠每移动一次,都重新计算最短路径. 3) 分别模拟猫的速度大于老鼠,猫的速度等于老鼠两种情形. 4) 迷宫可用数组表示,最短路径可用队列表示. 1.3功能扩展(自己定制) 1.可增加猫的数量; 2.可随机生成迷宫墙壁的位置; 3.设计老鼠应该用何策略才有可能逃脱被抓的命运 用C++语言,或者c语言 2 总体设计 在猫捉老鼠的模拟中,用到了二维指针。利用二维指针建立了迷宫,并且通过0代表通路,用1代表墙。在建立迷宫函数中,利用引用传递参数使迷宫自动生成。(自动是利用srand(time(NULL))来“播种子”后利用rand()%9来确定这些随机数是0~9之间,判断随即数大于6,则生成墙,否则为通路。这样就建立了迷宫。) 其次是利用结构体数组来作为栈,将老鼠和猫的每一步存入到栈中(也就是数组),当到达出口时则进行输出。 老鼠的走法是猫寻找迷宫的最短路径,寻找最短的出路,先将出口压入到栈中,并判断上、左、右斜上、左斜下单元的情况,并每次判断后将可行的路加入栈中,直到栈中的元素与迷宫中老鼠的初始位置相同的时候则将栈(数组)进行输出。 猫的走法是每一次老鼠走完后,都将老鼠的位置作为终点,进行判断,取最短的路径经行行走,每走一次将所走位置压入堆栈,最后输出。 图1 猫捉老鼠的模拟 3 详细设计 3.1结构体设计 3.2模块设计 图2 建立迷宫函数模块 3.3主模块设计 图4 主函数模块 4 运行结果 输入迷宫的行数 输入迷宫的列数,并随即生成迷宫,输出迷宫。 判断老鼠和猫的位置是否为墙,此时为猫为墙。完成函数操作。 输入迷宫出口,若老鼠位置及老鼠位置及出口位置不为墙,则老鼠和猫自动判断最短路径。猫捉老鼠函数结束后判断是否重新开始。 5 课程设计总结 在2个多星期的课题设计周中,我发现了自己许多的不足之处。就拿二维数组迷宫的自动创建为例,其中加入的cstdlib这个库函数,如果不翻阅资料是不会知道的。我从不同的书籍中查阅到了这点,自己的知识也有所长进。编写代码的时候有许多的繁琐之处,这些繁琐的地方都是通过不断的自我修改才不断完善,并且这种能力在不断的加强。学会了自己分段调试程序,不断在错误中改正自己犯的小细节错误。就这样在自己的错误中不断的提升了自己的能力,本打着挑战下自己的心态但最后还是发现自己做的c++太少了,以至于这套程序的不完整性。因此,这次的课题设计让我认识到了自己的不足,并且让我知道了自己的能力还是欠缺,需要在不断的学习中进步。 猫捉老鼠的模拟 二维数组代替迷宫(0代表通路,1代表墙。其中加入了随机数,并判断大于6让0和1随即的产生) 将做好的迷宫作为参数传入到函数中去 初始老鼠的起始位置 初始猫的起始位置 老鼠的走法 猫的走法 输出最后老鼠和猫所走路线 Struct Mark(迷宫结构体) { int x; int y; } 迷宫结构体 Struct zhan { int h; int z; } 用来存放猫和老鼠的路径 迷宫建立完成 开始 随机数6? 输入迷宫行数和列数m,n int i; int j; im? jn? a[i][j]=1 a[i][j]=0 是 是 是 否 否 否 输出a[i][j] 结束 随即产生猫和老鼠的起始位置 开始 猫的位置是否为墙 老鼠的位置是否为墙 出口的位置是否为墙 否 否 是 是 迷宫出口位置赋值给i1,j1 老鼠起始位置赋值给i2,j2 出口位置是否等于老鼠起始位置 累加器加1 否 累加器是否为1 Maze[i1][j1]==0 i1-- 累加器是否为2 累加器清零 否 是 是 j1-- 累加器是否为3 是 i1--;j1-- 否 判断是否为来路 是 累加器加一 累加器是否为4 否 否 i1++;j1-- 累加器不是1,2,3,4 否 是 将坐标设为不可通行 在回到上一次可通行道路 老鼠栈不为空 输出路径 结束 开始 建立迷宫函数 猫捉老鼠函数 结束

文档评论(0)

li455504605 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档