欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    嵌入式程序设计打地鼠游戏设计.docx

    • 资源ID:7503777       资源大小:111.47KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式程序设计打地鼠游戏设计.docx

    1、嵌入式程序设计打地鼠游戏设计2021年4月29日1开发背景打地鼠是一款常见的小游戏,简单有趣,深受人们的喜爱,本项目作为基于嵌入式WinCE课程设计和简单游戏编程而提出。希望通过开发打地鼠游戏,了解并掌握WinCE软件开发工具的使用,同时提高嵌入式设计的能力。2功能描述基本功能:地鼠随机出现在地图上,跟据鼠标点击事件捕获鼠标指针所在区域是否出现地鼠来判断玩家是否击中地鼠,玩家有10次失误机会。3.基本原理玩家触发游戏后,地鼠会随机出现在地图上,玩家通过鼠标击打地鼠,地鼠每隔一段时间机会随机出现在地图某一块,若玩家反映不及没有触发鼠标事件,地鼠随机出现别的地方玩家分数不变;若已触发鼠标事件且没有

    2、击中地鼠,玩家分数减少;击中则分数增加。系统流程图:(主要部分的流程图)4.系统总体设计4.1界面设计本系统设计了三个界面,一个是游戏运行界面,一个是成绩保存,一个历史最高纪录显示界面(玩家成绩)。4.2 相关变量定义int scorce;/得分int randx=0,randy=0;/随机得到的地鼠坐标int Total=10;/若有Total次击不中则游戏结束typedef struct TCHAR name20;/姓名 int score;/成绩User;4.3 内部类定义及方法说明void ReadScoreFile();/读取历史分数记录void WriteScoreFile();/

    3、将玩家的游戏分数写到文件中void SortList();/对玩家分数排序void InitData();/初始化数据void EndGame();/游戏结束void clearPicture(); /还原背景图void drawPicture(int bmpNum);/画图void chilkTrue(int x,int y);/判定是否击中 BOOL CDadishuDlg:OnInitDialog()游戏初始化函数。void CMengSnakeDlg:OnTimer(UINT nIDEvent)计时器函数,自动根据时间变量来执行程序,随机为地鼠生成一个坐标,并绘制到地图上。void C

    4、DadishuDlg:OnLButtonDown(UINT nFlags, CPoint point)消息处理函数,鼠标左键点击触发,主要用来打击地鼠。void CDadishuDlg:OnPaint() 重绘函数,实现地图区域的绘制游戏界面部分相关代码:OOL CDadishuDlg:OnInitDialog() CDialog:OnInitDialog(); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a di

    5、alog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon CenterWindow(GetDesktopWindow(); / center to the hpc screen / TODO: Add extra initialization here HWND hwndCB; hwndCB = CommandBar_Create(AfxGetInstanceHandle(), GetSafeHwnd(),0); CommandBar_InsertMenubar(hwndCB, A

    6、fxGetInstanceHandle(), IDR_MENU1, 0); return TRUE; / return TRUE unless you set the focus to a control/还原背景图void CDadishuDlg:clearPicture() PDC = GetDC(); CDC bmpDC; bmpDC.CreateCompatibleDC(PDC); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP3); BITMAP bm; bmp.GetBitmap(&bm); bmpDC.SelectObject(bmp); int p

    7、x=40+randx*80+1; int py=40+randy*80+1; PDC-StretchBlt (px,py,78,78,&bmpDC,0,0,bm.bmWidth, bm.bmHeight,SRCCOPY);/画图void CDadishuDlg:drawPicture(int bmpNum) PDC = GetDC(); CDC bmpDC; bmpDC.CreateCompatibleDC(PDC); CBitmap bmp; if(bmpNum=1) bmp.LoadBitmap(IDB_BITMAP1); else bmp.LoadBitmap(IDB_BITMAP2);

    8、 BITMAP bm; bmp.GetBitmap(&bm); bmpDC.SelectObject(bmp); int px=40+randx*80+1; int py=40+randy*80+1; PDC-StretchBlt (px,py,78,78,&bmpDC,0,0,bm.bmWidth, bm.bmHeight,SRCCOPY);/判定是否击中void CDadishuDlg:chilkTrue(int x,int y) int px_min=40+randx*80; int px_max=40+(randx+1)*80; int py_min=40+randy*80; int

    9、py_max=40+(randy+1)*80; if(x=px_min&x=py_min&ym_Value=scorce; ts-DoModal(); /void CDadishuDlg:OnPaint() CPaintDC dc(this); / device context for painting / TODO: Add your message handler code here CDC *pDC=new CClientDC(this); CPen pen;/画笔 pen.CreatePen(PS_SOLID,1,RGB(0,0,0); CPen *poldpen=pDC-Select

    10、Object(&pen); pDC-Rectangle(40,40,280,280); pDC-SelectObject(poldpen); /new出来的一般都需要delete来回收内存。 delete pDC; / Do not call CDialog:OnPaint() for painting messages/鼠标点击事件void CDadishuDlg:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default if(!start)

    11、return; chilkTrue(point.x,point.y); CDialog:OnLButtonDown(nFlags, point);/void CDadishuDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call default switch(nIDEvent) case 1: clearPicture(); randx=rand()%3; randy=rand()%3; drawPicture(1); break; case 2: m_score=scorce; Upd

    12、ateData(FALSE); break; case 3: _time+; char temp10; CString time; int second=_time%60; int minut=_time/60%60; int hour=_time/3600%24; _itoa(hour,temp,10); if(hour9) time+=temp; else time=time+0+temp; _itoa(minut,temp,10); if(minut9) time=time+:+temp; else time=time+:0+temp; _itoa(second,temp,10); if

    13、(second9) time=time+:+temp; else time=time+:0+temp; m_time=time; UpdateData(FALSE); break; CDialog:OnTimer(nIDEvent);/初始化数据void CDadishuDlg:InitData() Total=10; start=true; SetTimer(1,timer,NULL); scorce=0; SetTimer(2,100,NULL); _time=0; SetTimer(3,1000,NULL);/void CDadishuDlg:EndGame() KillTimer(1)

    14、; KillTimer(2); KillTimer(3); start=false;/重新开始void CDadishuDlg:OnMENUITEMRestart() / TODO: Add your command handler code here EndGame(); InitData();/开始游戏void CDadishuDlg:OnMENUITEMStart() / TODO: Add your command handler code here InitData();/void CDadishuDlg:OnMENUITEMSeachRecord() / TODO: Add you

    15、r command handler code here SerachRecord *sr=new SerachRecord; sr-DoModal();保存记录的相关代码:User list11;int UserListLength=0;/ TS message handlersvoid TS:ReadScoreFile() CString filename=scores.dat; HANDLE hFile=CreateFile(filename,GENERIC_READ,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)

    16、; SetFilePointer(hFile,0,NULL,FILE_BEGIN); User us; DWORD aa; int i=0; do ZeroMemory(&us,sizeof(us); if(ReadFile(hFile,&us,sizeof(us),&aa,NULL) if(aa!=0) listi+=us; while(aa=sizeof(us); UserListLength=i; CloseHandle(hFile);/写到文件里void TS:WriteScoreFile() CString filename=scores.dat; int i; /文件句柄 HAND

    17、LE hFile=CreateFile(filename,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); /设置文件开始处 SetFilePointer(hFile,0,NULL,FILE_BEGIN); DWORD aa; /将数据写到文件 for(i=0;iUserListLength&i10;i+) WriteFile(hFile,&listi,sizeof(listi),&aa,NULL); CloseHandle(hFile);/安分数从大到小排序void TS:SortList

    18、() int i,j,k; for(i=0;iUserListLength-1;i+) k=i; for(j=i+1;jlistk.score) k=j; if(k!=i) User temp=listk; listk=listi; listi=temp; void TS:OnOK() / TODO: Add extra validation here / TODO: Add extra validation here UpdateData(TRUE); ReadScoreFile(); int i=0; User us; ZeroMemory(&us,sizeof(us); /将值更新到变量

    19、 UpdateData(TRUE); wcscpy(us.name,m_UserName); us.score=m_Value; listUserListLength=us; UserListLength+; SortList(); for(i=0;i=10) AfxMessageBox(_T(对不起你的名次最低,没有突破前10名); return; WriteScoreFile(); CDialog:OnOK();查看记录相关代码void SerachRecord:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX);

    20、/AFX_DATA_MAP(SerachRecord) DDX_Control(pDX, IDC_LIST1, m_list); CRect rt; m_list.GetClientRect(&rt); m_list.InsertColumn(0,_T(名次),LVCFMT_LEFT,(int)(rt.Width()*0.35); m_list.InsertColumn(1,_T(得分),LVCFMT_LEFT,(int)(rt.Width()*0.35); m_list.InsertColumn(2,_T(姓名),LVCFMT_LEFT,(int)(rt.Width()*0.3); /AFX

    21、_DATA_MAPBEGIN_MESSAGE_MAP(SerachRecord, CDialog) /AFX_MSG_MAP(SerachRecord) /AFX_MSG_MAPEND_MESSAGE_MAP()/ SerachRecord message handlersvoid SerachRecord:OnOK() / TODO: Add extra validation here m_list.DeleteAllItems(); CString filename=scores.dat; HANDLE hFile=CreateFile(filename,GENERIC_READ,FILE

    22、_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); SetFilePointer(hFile,0,NULL,FILE_BEGIN); User us; User usList10; DWORD aa; int i=0; do ZeroMemory(&us,sizeof(us); if(ReadFile(hFile,&us,sizeof(us),&aa,NULL) if(aa!=0) usListi+=us; while(aa=sizeof(us); for(int j=i-1;j=0;j-) m_list.InsertItem(0,_T(test); char temp10; _itoa(j+1, temp, 10); CString num=temp; m_list.SetItemText(0,0,num); m_list.SetItemText(0,2,usListj.name); _itoa(usListj.score, temp, 10); CString sc=temp; m_list.SetItemText(0,1,sc); CloseHandle(hFile); /CDialog:OnOK();5系统测试5.1 运行界面1游戏开始界面2中间游戏进行界面3游戏结束界面4刷新显示记录:


    注意事项

    本文(嵌入式程序设计打地鼠游戏设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开