1、 信息科学与技术学院信息科学与技术学院 程序设计基础课程设计报告程序设计基础课程设计报告 题目名称:题目名称: 猫抓老鼠的模拟猫抓老鼠的模拟 学生姓名:学生姓名: 学学 号号: : 专业班级:专业班级: 20112011 级计算机与科学技术级计算机与科学技术 1 1 班班 指导教师:指导教师: 20122012 年年 6 6 月月 29 29 日日 目录 1 课程设计题目与要求 3 1.1 设计题目. 3 1.2 设计要求. 3 2 总体设计 4 3 详细设计 5 3.1 数据结构设计. 5 3.2 主模块设计. 5 4 运行结果 10 5 课程设计总结 12 1 课程设计题目与要求 1.1
2、设计题目 猫抓老鼠的模拟 1.2 设计要求 1) 设计一个迷宫:猫,老鼠的位置随机生成; 2) 猫,老鼠每移动一次,都重新计算最短路径. 3) 分别模拟猫的速度大于老鼠,猫的速度等于老鼠两种情形. 4) 迷宫可用数组表示,最短路径可用队列表示. 1.3 功能扩展(自己定制) 1.可增加猫的数量; 2.可随机生成迷宫墙壁的位置; 3.设计老鼠应该用何策略才有可能逃脱被抓的命运 用 C+语言,或者 c 语言 2 总体设计 在猫捉老鼠的模拟中,用到了二维指针。利用二维指针建立了迷宫,并且通过 0 代表通路,用 1 代表墙。在建立迷宫函数中,利用引用传递参数使迷宫自动生 成。 (自动是利用 srand
3、(time(NULL) )来“播种子”后利用 rand()%9 来确定 这些随机数是 09 之间,判断随即数大于 6,则生成墙,否则为通路。这样就建 立了迷宫。 ) 其次是利用结构体数组来作为栈,将老鼠和猫的每一步存入到栈中(也就是数 组) ,当到达出口时则进行输出。 老鼠的走法是猫寻找迷宫的最短路径,寻找最短的出路,先将出口压入到栈中, 并判断上、 左、 右斜上、 左斜下单元的情况, 并每次判断后将可行的路加入栈中, 直到栈中的元素与迷宫中老鼠的初始位置相同的时候则将栈(数组)进行输出。 猫的走法是每一次老鼠走完后,都将老鼠的位置作为终点,进行判断,取最短 的路径经行行走,每走一次将所走位置
4、压入堆栈,最后输出。 图 1 猫捉老鼠的模拟 猫捉老鼠的模拟 二维数组代替迷宫(0 代表通路,1 代表墙。其中 加入了随机数, 并判断大于 6 让 0 和 1 随即的产生) 将做好的迷宫作为参数传入到函数中去 初始老鼠的起始位置 初始猫的起始位置 老鼠的走法 猫的走法 输出最后老鼠和猫所走路线 3 详细设计 3.1 结构体设计 Struct Mark(迷宫结构体) int x; int y; 迷宫结构体 Struct zhan int h; int z; 用来存放猫和老鼠的路径 3.2 模块设计 图 2 建立迷宫函数模块 迷宫建立完成 开始 随机数6? 输入迷宫行数和列数 m,n int i; int j; im? jn? aij=1 aij=0 是 是 是 否 否 否 输出 aij 结束 随即产生猫和老鼠的起始位置