MFC 写贪食蛇时遇到的问题..

问题描述

界面如下在classwizard中加了按键响应处理函数voidC贪吃蛇Dlg::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){//MessageBox(L"游111戏:");//TODO:在此添加消息处理程序代码和/或调用默认值switch(nChar){caseVK_LEFT:dir=left;break;caseVK_RIGHT:dir=right;break;caseVK_UP:dir=up;break;caseVK_DOWN:dir=down;break;}CDialogEx::OnKeyDown(nChar,nRepCnt,nFlags);}开始游戏按钮加了处理函数,如下voidC贪吃蛇Dlg::OnBnClickedStart(){GetDlgItem(IDC_SUSPEND)->EnableWindow(TRUE);//GetDlgItem(IDD_MY_DIALOG)->;SetTimer(1,100,NULL);}voidC贪吃蛇Dlg::OnTimer(UINT_PTRnIDEvent){switch(nIDEvent){case1:switch(dir){caseup:X0-=1;break;casedown:X0+=1;break;caseleft:Y0-=1;break;caseright:Y0+=1;break;default:break;}if(X0<0||X0>=NUM-1||Y0<0||Y0>=NUM-1||snake[X0][Y0]>0){MessageBox(L"游戏结束n得分:"+score);KillTimer(1);}elseif(snake[X0][Y0]==0){for(inti=0;i<NUM-1;i++)for(intj=0;j<NUM-1;j++){if(snake[i][j]>0){if(snake[i][j]==lenth)snake[i][j]=0;elsesnake[i][j]++;}}snake[X0][Y0]=1;}else{for(inti=0;i<NUM-1;i++)for(intj=0;j<NUM-1;j++){if(snake[i][j]>0)snake[i][j]++;}lenth++;UpdateData();score++;UpdateData(FALSE);snake[X0][Y0]=1;X1=abs(rand()%(NUM-2));Y1=abs(rand()%(NUM-2));if(snake[X1][Y1]==0)snake[X1][Y1]==-1;}break;}Invalidate();CDialogEx::OnTimer(nIDEvent);}问题:点击开始后,对话框不响应按键消息,我按了上下左右没有反应,焦点一直在右边的开始游戏,暂停,退出按钮上切换当蛇撞到了边界,游戏结束的MessageBox无限循环的弹出来,求大神分析问题所在

解决方案

解决方案二:
定时器100毫米也太密了吧?不要用定时器。你这个还用定时器?

时间: 2024-10-31 12:52:23

MFC 写贪食蛇时遇到的问题..的相关文章

在vs2010中利用mfc写一个连连看游戏时各种资源窗口啥的等都报“未声明的标识符”问题

问题描述 在vs2010中利用mfc写一个连连看游戏时各种资源窗口啥的等都报"未声明的标识符"问题 10C 写这个连连看游戏刚开始导入各种资源文件改好ID后运行正常,但通过进一步的编程后不知道为什么开始报各种"未声明的标识符"bug(可能中途改了一些什么设置.....)现项目最近运行的log文件如下: 生成启动时间为 2016/5/26 17:37:08. 1>项目"C:UsersAliezdocumentsvisual studio 2010Pro

mfc-各位大神,我用MFC写了个示波器,但是我点Fram主框时为什么里面的波形会失真啊?

问题描述 各位大神,我用MFC写了个示波器,但是我点Fram主框时为什么里面的波形会失真啊? 各位大神,我用MFC写了个示波器,但是我点Fram主框时为什么里面的波形会失真啊?

Console小技巧——Console版贪食蛇

其实这是我写的第一个小游戏,大学C语言那个剪子.石头.布的实验我是没做-- 今天刚好是愚人节,就把这个当作小礼物送给大家,希望大家天天高兴 :) 这个Console版贪食蛇是"七彩输出"和"字符涂鸦"的综合应用. 估计编写Console程序用得最多的就是ReadLine()和WriteLine()这两个方法了吧,其实Console还有几 个很有用的方法,稍加组合就可以使Console程序非常有意思了. 这里挑几个核心的总结一下. 如何使输出有颜色: Console.

贪食蛇怎么走的这么奇葩....

问题描述 为什么这个蛇有的时候会一下走两格?一卡一卡的找了好久都没有找出错误....才这么点程序不会是电脑卡造成的吧,求大神帮忙看看[code=publicclassGameTest{publicstaticvoidmain(String[]args){Yardy=newYard(newSnake());y.gameBegin();}}importjava.awt.Color;importjava.awt.Font;importjava.awt.Frame;importjava.awt.Grap

mfc csv 中文-mfc 操作csv文件时,无法写入汉字

问题描述 mfc 操作csv文件时,无法写入汉字 使用vs2013向csv文件写数据,但是无法写入汉字,英文和数字可以正常写入 求大神指导 解决方案 //设置语言为中文,否则在Unicode编码下读出中文字符为乱码 char* old_locale = _strdup(setlocale(LC_CTYPE, NULL)); setlocale(LC_CTYPE, "chs"); ... 文件操作 ... setlocale(LC_CTYPE, old_locale); //还原语言区域

MFC做播放器时怎么实现歌词同步显示

问题描述 MFC做播放器时怎么实现歌词同步显示 RT,大神们给个教程啥的一步步来的那种,直接看代码感觉太复杂了,看不懂那.. 解决方案 http://download.csdn.net/detail/qq_23668339/8732801教程,看<深入浅出MFC> 解决方案二: MFC制作音乐播放器的歌词同步问题http://download.csdn.net/detail/ouyangtianhan/3046678 解决方案三: 可以先打开一些歌词文件看看,基本的格式就是时间:歌词这样的,其

MFC读txt数据时,数据出错

问题描述 MFC读txt数据时,数据出错 我用mfc写了一个程序用于读取数据进行一元线性回归计算,读进来的数据总会莫名其妙的出问题,比如数据是12.34,读进来就会变成12.33999999999999999或者12.340000000000001,求各路大神帮忙看看是什么回事 解决方案 你有考虑过精度问题吗? 解决方案二: 浮点数在计算机中无法精确存储,只是无限接近这个数而已比如你存储12.34也只是存储一个无限接近12.34的值(比如12.339999....)所以我们比较浮点数的时候会设置

VS2010中MFC写注册表RegCreateKey

问题描述 VS2010中MFC写注册表RegCreateKey HKEY hKey ; RegCreateKey(HKEY_LOCAL_MACHINE , TEXT("Software\MyRegisterTest\admin") , &hKey) ; RegSetValue(hKey , NULL , REG_SZ , TEXT("zhangsan") , strlen("zhangsan")) ; //RegCreateKey(HKE

在线旅游正以“贪食蛇”模式洗牌

携程新劲敌来了.对手靠"吞并同类"的贪食蛇模式显现江湖. 总部位于广州的易网通旅行(以50.7%的份额控股广之旅)近日宣布,全资收购总部在北京的游易航空旅行网,成立"易网通游易"新公司,年营收总额达17.5亿元,超过在线旅游老大携程16亿的年收入. 蚂蚁雄兵能够击败大象吗?"从第三方研究数据看,携程在在线旅游市场占领先地位,占据的80%以上的市场份额正在进一步扩大."携程CEO范敏回答淡定. 当心!在线旅游企业开始新一轮洗牌了.细分到机票预订这类