基于wince的c的贪吃蛇游戏内容摘要:
功实现。 附上判断游戏结束的代码: if(uTag==0) { for(int i=0。 i()。 i++) { CPoint uPoint1=(i)。 if(== amp。 amp。 ==) { uTag=1。 break。 } } } if(uTag==0) { 16 (0,uPoint)。 ReDisplay(uPoint)。 if(== amp。 amp。 ==) { m_nCount++。 IniAim()。 Invalidate()。 } else { CPoint uPoint1=(())。 (())。 ReDisplay(uPoint1)。 } } else { KillTimer(1)。 MessageBox(strTemp,_T(游戏结束 ))。 //游戏结束对话框 } CView::OnTimer(nIDEvent)。 } ( 5) 对得分对话框的测试 在点击“开始”按钮后,控制“蛇”进行进食(利用“蛇”头去“吃掉”显示框体里的黑色“食物”),进行 3 次测试,依次吃掉 10 个食物,然后“自杀”结束游戏,观察弹出的对话框里显示的得分是否合理,测试的结果完全符合设计预期的效果,此功能成功实现。 附上实现该功能的代码: CString strTemp。 (_T(你的得分是: %d 分 \n 你的用时是: %d 秒 ),m_nCount,m_nTime)。 ( 6) 对“退出”按钮的测试 在游戏开始前、游戏运行过程中,点击“退出”按钮,成功退出 17 程序。 游戏结束后,弹出用时、得分对话框后会显示“退出”按钮,点击“退出”按钮,成功退出程序。 与设计预期效果一致,此功能成功实现。 ( 7) 部分重要代码: 游戏窗框的构建: void CtcsView::IniGame() { m_nLeft=40。 //左边界 m_nTop=30。 //上边界 m_nWidth=50。 //窗框宽度 m_nHeight=25。 //窗框高度 m_nSize=14。 //缩放比例 m_nDirect=1。 //运动方向,只能设定为 m_nCount=0。 //得分计数起始值 ()。 (CPoint(2,8))。 //蛇身的起始位置(共个) (CPoint(2,7))。 (CPoint(2,6))。 (CPoint(2,5))。 (CPoint(2,4))。 (CPoint(2,3))。 m_nTime=0。 m_nTime1=0。 srand(1)。 IniAim()。 } 蛇身、食物、时间、得分的定义: void CtcsView::OnDraw(CDC* pDC) { CtcsDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 pDCSelectStockObject(WHITE_BRUSH)。 pDCRectangle(CRect(m_nLeft1,m_nTop1,m_nLeft+m_nWidth*m_nSize+1,m_nTop+m_nHeight*m_nSize+1))。 18 CString uStr。 (_T(用时: %d),m_nTime)。 //用时显示 (_T(得分: %d),m_nCount)。 //得分显示 pDCSelectStockObject(GRAY_BRUSH)。 //贪吃蛇颜色(黑 BLACK_BRUSH,深灰 DKGRAY_BRUSH,灰 GRAY_BRUSH,浅灰 LTGRAY_BRUSH,白 WHITE) pDCRectangle(CRect(m_nLeft+*m_nSize,m_nTop+*m_nSize,m_nLeft+(+1)*m_nSize,m_nTop+(+1)*m_nSize))。 for(int i=0。 i=()。 i++) { CPoint uPoint=(i)。 pDCRectangle(CRect(m_nLeft+*m_nSize,m_nTop+*m_nSize,m_nLeft+(+1)*m_nSize,m_nTop+(+1)*m_nSize))。 } } 五、 运行结果 游戏运行效果图: ( 1)游戏初始界面: 19 ( 2) 游戏运行时界面: ( 3) 游戏结束界面: 20 经过在 Visual Studio2020 环境中测试和排错后,应用程序没有出现错误。 PC 机和实验箱建立连接后,在 VS2020 中启动 Debug 按钮,选择相应设置, C++贪吃蛇应用程序顺利运行在 Windows CE 系统上,运行结果如下图: 六、附录 参考资料 《面向对象程序设计与 Visual C++ 教程》 《嵌入式系统设计与开发》 网上的相关资料 21 遇到的问题与解决方法 我们的程序是从 PC 上的 MFC 程序改编过来的。 在一开始把所有东西都搭建好,写好代码后,编译时发现大量的错误。 后来经过仔细的检查,发现了几个 方面的问题。 首先是一些由于疏忽导致的语法错误,例如漏了“;”或“:”等符号,类名函数名打错等。 第二个问题就是我们一些生成的对话框里面的字符串,都要换成相应的格式才能实现。 如: (你的得分是: %d 分 \n 你的用时是: %d 秒 ,m_nCount,m_nTime)。 要改成 (_T(你的得分是: %d 分 \n 你的用时是: %d 秒 ),m_nCount,m_nTime)。 第三个问题则是有一些使用到的函数在 WinCE 上没有定义,不能实现,需要换一种函数或 换一种方式来实现,如显示时间、显示分数用到的textout,我们最后把它改成了用对话框进行实现。 当我们把所有错误都修正,通过了编译之后,到实验箱里进行测试时,又遇到了更加棘手的问题。 一开始蛇的方向是用键盘的 a、 s、w、 d 和上下左右键来控制的,但实验箱的小键盘只有数字键和 abcd四个按键,而用 wince 屏幕上的键盘来控制又很不方便,我们就把代码中的控制按键改成了数字键 9。 但是当我们把修改后的程序 build 进去的时候,发现不能用。基于wince的c的贪吃蛇游戏
相关推荐
private void Msave_Click(object sender, EventArgs e) { // = true。 = txt files (*.txt)|*.txt|All files (*.*)|*.*。 = 0。 // =。 // = txt。 if (() == ) { = + .txt。 StreamWriter sw = new StreamWriter()。 ()。
流程图 打开设备 结束 开始 将运算结果转为整型 将数据输出到四个七段数码管 关闭设备 11 } 三、 关闭设备 void CcDlg::OnBnClickedButtonClosedevice() { // TODO: Add your control notification handler code here if(m_hFile) CloseHandle(m_hFile)。 } 第三部分
dio Serviee)的英文简称,是在 GSM 系统上发展出来的一种新的承载业 务,目的是为 GSM 用户提供分组形式的数据业务。 GPRS 采用与 GSM 同样的无线调制标准、同样的频带、同样的突发结构、同样的跳频规则以及同样的 TDMA 帧结构。 GPRS 允许用户在端到端分组转移模式下发送和接收数据,而不需要利用电路交换模式的网络资源。 从而提供了一种高效、低成本的无线分组数据业务。
直通快车票额按列车限售区段分配。 首先保证始发站至终到站或限售区段以长途客流的 需要,途中各停车站的票额按限售区段以远客流量依次分配。 途中各停车站分配的票额由始发站套用。 限售区段以远各站如有下车规律数量,可按规律分配。 2.软、硬卧铺,软座票额 软、硬卧铺票额首先考虑列车始发站长途旅客的需要,同时根据列车沿途停靠站客流情况适当兼顾中途站。 根据长短途列车合理分工的运输组织原则
同时存储在数据库中 结束 开始 管理员 连接数据库的存储 结束 Web 开发课程设计报告 第 7 页,共 12 页 (四)编码实现和测试 实现方法: javascript 脚本 : 用来检查表单数据是否为空。 script //用于管理员登陆的验证 function check() { var adminName=(adminName).value。 var
现场查询每部影片的场次另外提供进阶查询可使观众了解每部影片的导演主演类型剧情等资讯 会员服务相关功能有会员登入会员 注册会员登入以后可查询每部影片的场次并在网上直接进行订票操作该功能极大满足了观众自由选择座位的权利 图 31 前台系统功能