您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 嵌入式程序设计-打地鼠游戏设计
2020年4月18日嵌入式程序设计打地鼠目录1开发背景................................................................................................32功能描述................................................................................................33.基本原理................................................................................................34.系统总体设计........................................................................................44.1界面设计.....................................................................................44.2相关变量定义.............................................................................64.3内部类定义及方法说明...............................................................65系统测试..............................................................................................165.1运行界面...................................................................................161开发背景打地鼠是一款常见的小游戏,简单有趣,深受人们的喜爱,本项目作为基于嵌入式WinCE课程设计和简单游戏编程而提出。希望通过开发《打地鼠》游戏,了解并掌握WinCE软件开发工具的使用,同时提高嵌入式设计的能力。2功能描述基本功能:地鼠随机出现在地图上,跟据鼠标点击事件捕获鼠标指针所在区域是否出现地鼠来判断玩家是否击中地鼠,玩家有10次失误机会。3.基本原理玩家触发游戏后,地鼠会随机出现在地图上,玩家通过鼠标击打地鼠,地鼠每隔一段时间机会随机出现在地图某一块,若玩家反映不及没有触发鼠标事件,地鼠随机出现别的地方玩家分数不变;若已触发鼠标事件且没有击中地鼠,玩家分数减少;击中则分数增加。系统流程图:(主要部分的流程图)4.系统总体设计4.1界面设计本系统设计了三个界面,一个是游戏运行界面,一个是成绩保存,一个历史最高纪录显示界面(玩家成绩)。4.2相关变量定义intscorce;//得分intrandx=0,randy=0;//随机得到的地鼠坐标intTotal=10;//若有Total次击不中则游戏结束typedefstruct{TCHARname[20];//姓名intscore;//成绩}User;4.3内部类定义及方法说明voidReadScoreFile();//读取历史分数记录voidWriteScoreFile();//将玩家的游戏分数写到文件中voidSortList();//对玩家分数排序voidInitData();//初始化数据voidEndGame();//游戏结束voidclearPicture();//还原背景图voiddrawPicture(intbmpNum);//画图voidchilkTrue(intx,inty);//判定是否击中BOOLCDadishuDlg::OnInitDialog()游戏初始化函数。voidCMengSnakeDlg::OnTimer(UINTnIDEvent)计时器函数,自动根据时间变量来执行程序,随机为地鼠生成一个坐标,并绘制到地图上。voidCDadishuDlg::OnLButtonDown(UINTnFlags,CPointpoint)消息处理函数,鼠标左键点击触发,主要用来打击地鼠。voidCDadishuDlg::OnPaint()重绘函数,实现地图区域的绘制游戏界面部分相关代码:OOLCDadishuDlg::OnInitDialog(){CDialog::OnInitDialog();//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//SetsmalliconCenterWindow(GetDesktopWindow());//centertothehpcscreen//TODO:AddextrainitializationhereHWNDhwndCB;hwndCB=CommandBar_Create(AfxGetInstanceHandle(),GetSafeHwnd(),0);CommandBar_InsertMenubar(hwndCB,AfxGetInstanceHandle(),IDR_MENU1,0);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}//还原背景图voidCDadishuDlg::clearPicture(){PDC=GetDC();CDCbmpDC;bmpDC.CreateCompatibleDC(PDC);CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP3);BITMAPbm;bmp.GetBitmap(&bm);bmpDC.SelectObject(bmp);intpx=40+randx*80+1;intpy=40+randy*80+1;PDC-StretchBlt(px,py,78,78,&bmpDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);}//画图voidCDadishuDlg::drawPicture(intbmpNum){PDC=GetDC();CDCbmpDC;bmpDC.CreateCompatibleDC(PDC);CBitmapbmp;if(bmpNum==1)bmp.LoadBitmap(IDB_BITMAP1);elsebmp.LoadBitmap(IDB_BITMAP2);BITMAPbm;bmp.GetBitmap(&bm);bmpDC.SelectObject(bmp);intpx=40+randx*80+1;intpy=40+randy*80+1;PDC-StretchBlt(px,py,78,78,&bmpDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);}//判定是否击中voidCDadishuDlg::chilkTrue(intx,inty){intpx_min=40+randx*80;intpx_max=40+(randx+1)*80;intpy_min=40+randy*80;intpy_max=40+(randy+1)*80;if(x=px_min&&x=px_max&&y=py_min&&y=py_max){scorce+=10;drawPicture(2);}else{Total--;scorce-=10;clearPicture();}if(Total==0){EndGame();TS*ts=newTS;ts-m_Value=scorce;ts-DoModal();}}//voidCDadishuDlg::OnPaint(){CPaintDCdc(this);//devicecontextforpainting//TODO:AddyourmessagehandlercodehereCDC*pDC=newCClientDC(this);CPenpen;//画笔pen.CreatePen(PS_SOLID,1,RGB(0,0,0));CPen*poldpen=pDC-SelectObject(&pen);pDC-Rectangle(40,40,280,280);pDC-SelectObject(poldpen);//new出来的一般都需要delete来回收内存。deletepDC;//DonotcallCDialog::OnPaint()forpaintingmessages}//鼠标点击事件voidCDadishuDlg::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(!start)return;chilkTrue(point.x,point.y);CDialog::OnLButtonDown(nFlags,point);}//voidCDadishuDlg::OnTimer(UINTnIDEvent){//TODO:Addyourmessagehandlercodehereand/orcalldefaultswitch(nIDEvent){case1:clearPicture();randx=rand()%3;randy=rand()%3;drawPicture(1);break;case2:m_score=scorce;UpdateData(FALSE);break;case3:_time++;chartemp[10];CStringtime;intsecond=_time%60;intminut=_time/60%60;inthour=_time/3600%24;_itoa(hour,temp,10);if(hour9)time+=temp;elsetime=time+0+temp;_itoa(minut,temp,10);if(minut9)time=time+:+temp;elsetime=time+:0+temp;_itoa(second,temp,10);if(second9)time=time+:+temp;elsetime=time+:0+temp;m_time=time;UpdateData(FALSE);break;}CDialog::OnTimer(nIDEvent);}//初始化数据voidCDadishuDlg::InitData(){Total=10;start=true;SetTimer(1,timer,NULL);scorce=0;SetTimer(2,100,NULL);_time=0;SetTimer(3,1000,NULL);}//voidCDadishuDlg::EndGame(){KillTimer(1);KillTimer(2);KillTimer(3);start=false;}//重新开始voidCDadishuDlg::OnMENUITEMRestart(){//TODO:AddyourcommandhandlercodehereEndGame();InitData();}//开始游戏voidCDadishuDlg::OnMENUITEMStart(){//TODO:AddyourcommandhandlercodehereInitData();}//voidCDadishuDlg::OnMENUITEMSeachRecord(){//TODO:AddyourcommandhandlercodehereSer
本文标题:嵌入式程序设计-打地鼠游戏设计
链接地址:https://www.777doc.com/doc-4882191 .html