嵌入式程序设计-打地鼠游戏设计.doc
- 文档编号:249863
- 上传时间:2022-10-07
- 格式:DOC
- 页数:19
- 大小:1.38MB
嵌入式程序设计-打地鼠游戏设计.doc
《嵌入式程序设计-打地鼠游戏设计.doc》由会员分享,可在线阅读,更多相关《嵌入式程序设计-打地鼠游戏设计.doc(19页珍藏版)》请在冰豆网上搜索。
嵌入式程序设计
打地鼠
2022年10月7日
目录
1开发背景 3
2功能描述 3
3.基本原理 3
4.系统总体设计 4
4.1界面设计 4
4.2相关变量定义 6
4.3内部类定义及方法说明 6
5系统测试 16
5.1运行界面 16
1开发背景
打地鼠是一款常见的小游戏,简单有趣,深受人们的喜爱,本项目作为基于嵌入式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'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE); //Setbigicon
SetIcon(m_hIcon,FALSE); //Setsmallicon
CenterWindow(GetDesktopWindow()); //centertothehpcscreen
//TODO:
Addextrainitializationhere
HWNDhwndCB;
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);
else
bmp.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:
Addyourmessagehandlercodehere
CDC*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/orcalldefault
if(!
start)
return;
chilkTrue(point.x,point.y);
CDialog:
:
OnLButtonDown(nFlags,point);
}
//
voidCDadishuDlg:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
switch(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(hour>9)
time+=temp;
else
time=time+"0"+temp;
_itoa(minut,temp,10);
if(minut>9)
time=time+":
"+temp;
else
time=time+":
0"+temp;
_itoa(second,temp,10);
if(second>9)
time=time+":
"+temp;
else
time=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:
Addyourcommandhandlercodehere
EndGame();
InitData();
}
//开始游戏
voidCDadishuDlg:
:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 程序设计 地鼠 游戏 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)