《猫捉老鼠小游戏》程序设计基础课程设计报告专业:计算机科学与技术班级:09级2班姓名:马建南学号:20090822302009082233指导教师:郭攀2010年9月18日目录1课程设计目的..........................................21.1课程设计目的.......................................21.2课程设计题目.......................................21.3题目要求..........................................22总体设计...............................................2(画出设计课题程序总体组成框图、流程图)3详细设计................................................3(各个模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)及模块程序流程图)4课程设计的原程序代码...................................4(程序代码清单中应有足够的注释)5运行结果.............................................22(截图及说明)6课程设计总结.........................................257参考书目..............................................261课程设计目的1.1课程设计目的设计一个猫和老鼠迷宫,显示猫和老鼠图像;设置游戏菜单、控制按钮、游戏时间、老鼠个数;进而实现游戏效果。1.2课程设计题目猫捉老鼠小游戏1.3题目要求1)设计一个猫捉老鼠迷宫。2)要求猫的速度大于老鼠的速度。3)计算最短路径,每走一步,猫按最短路径抓获老鼠;最短路径可运用数据结构中的队列实现。附加功能:1)迷宫随机生成。2)增加老鼠个数。2总体设计框架图:LoadBitmap()载入图用OnDraw()绘制迷宫显示绘制资源图片开始更改位图显示区域坐标,达到猫和老鼠的动态实现菜单选项猫鼠路径限制显示游戏结果运行结束按钮时间设置3.详细设计1.OnDraw()函数显示迷宫及猫和老鼠。2.OnTimer()函数判定结束标志,设置游戏时间。3.OnKeyDown()函数实现猫的手动控制。4.CDC*pDC需要画位图的CDC指针UINTIDImage位图资源IDCrect&rect指定位图在pDC中的位置COLORREFrgbMask位图的透明色5.CCatCatchRatView::CCatCatchRatView(){m_bmWall.LoadBitmap(IDB_Wall);//载入迷宫位图}6.voidCCatCatchRatView::OnUpdateStop(CCmdUI*pCmdUI){pCmdUI->Enable(StartFlag==1);//游戏过程中可以选停止菜单}通过不断改变猫鼠位图显示区域坐标,实现猫和老鼠的动态实现4.课程设计的源程序代码(主要代码)//CatCatchRatView.h:interfaceoftheCCatCatchRatViewclass#if!defined(AFX_CATCATCHRATVIEW_H__B4196808_4145_49DF_99D0_45F38E4512CB__INCLUDED_)#defineAFX_CATCATCHRATVIEW_H__B4196808_4145_49DF_99D0_45F38E4512CB__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#include"SelectDlg.h"#defineRATMAX5//宏定义,老鼠的最大个数classCCatCatchRatView:publicCView{public:CBitmapm_bmCat[4],m_bmRat[4];//猫和老鼠的位图CBitmapm_bmWall;intStartFlag;//程序运行状态,-1:初始,0:暂停,1:开始,2:结束boolm_bRatLive[RATMAX];//老鼠存活标志intm_nWallw,m_nWallh;intm_nWallx,m_nWally;intm_nCatw,m_nCath;//猫位图的宽和高intm_nCatx,m_nCaty;//猫位图的左上角坐标//猫和老鼠的运动方向intm_nRatDirection[RATMAX],m_nCatDirection;intm_nRatw,m_nRath;//老鼠位图的宽和高//老鼠位图的左上角坐标intm_nRatx[RATMAX],m_nRaty[RATMAX];CRectm_rectClient;//场地矩形CRectm_rectWall;//墙矩形CRectm_rectRat[RATMAX],m_rectCat;//猫鼠位图的矩形intm_nRat;//待抓老鼠数intm_nRatSpeed,m_nCatSpeed;//运动速度CTimem_timeStart,m_timeEnd;//游戏开始和结束时间CTimeSpanm_timeWork,m_timeSet;//游戏剩余时间和设定时间intm_nDifficulty;//难度0:低,1:中,2:高intm_nWinFlag;//游戏获胜者,0:猫获胜,1:老鼠获胜protected://createfromserializationonlyCCatCatchRatView();DECLARE_DYNCREATE(CCatCatchRatView)public:CCatCatchRatDoc*GetDocument();public:protected:这是一个用来画透明位图的函数CDC*pDC需要画位图的CDC指针UINTIDImage位图资源IDCrect&rect指定位图在pDC中的位置COLORREFrgbMask位...