MFC写的贪吃蛇代码_第1页
MFC写的贪吃蛇代码_第2页
MFC写的贪吃蛇代码_第3页
MFC写的贪吃蛇代码_第4页
MFC写的贪吃蛇代码_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手把手教“MFC版贪吃蛇教程”写在前面的话本次贪吃蛇教程主要知识点包括以下几个方面CView类中的消息响应控件的消息响应3基于CView类内的具体游戏实现数组5游戏图形的实现用CDC类实现。本版游戏的具体实现是在CViewl类中实现,所以其他类不用添加任何代码。

由于此次贪吃蛇需要MFC的开发环境,所以打开VisualC++新建一个MFCAppWizard单文档工程,随意取名一个工程名称。其它文档SNAKE创建新的工作空间圜邀加葡当前£住■空恂iMFCAppWi例d"Win32COMAppWizard^ClusterResoufceTypeWizardJ^Custom其它文档SNAKE创建新的工作空间圜邀加葡当前£住■空恂iMFCAppWi例d"Win32COMAppWizard^ClusterResoufceTypeWizardJ^Custom即pW色盘rd理Uag/agEProjec*^■DevStudioAdd~iriWizardExtend-edSloredProcWizardijISAPIExtensionWizard旧可呢.嘉MFCActiveXCantrclWirard^MFCAppWizmd|d|QJ\NtwDataiiastWizard-仃UtilityPr&ject国Win32Application"1Win32Console^ppIicatiaR3Win32Dynam)c-LinkLibrary国StaticHorary位置圜:平创田D:\MFC\SNAKEF2刁dy您要创建的应用程序类型是:F2刁dy行单交档倒「多重文档(MJ「基本对话框回。文档/•查看体系结构支持凹您的资源使用的语言是;[APPWZCHS.DLL)£上一步 下一步〉 完成 取消本次贪吃蛇基本流程与大体思想1定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。2用数组初始化长度为3的贪吃蛇,并且默认食物未出现3在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。5具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。.1 - i .u-^-^-^一一.――,■- HBY1lintlOYffvciildanaierff"Tor VMiaLKviCT-^1SNAKEclasses飞CAboutDIg"二CMalnFrame»CSNAKEAppB::CSNAKEDoc.MCSNAKEVicw」Globals■「津Windows悄息厚件(妙WM^CANCELMODEWM^CAPIURECHAMGEDWM_CHARWM_CONTEXTMENUWMCOPYDATA△己存在的消息摩件句柄回:WM_KEYDOWN确定取捎WMRBUTTONDOWNWM_TIMERAddHandlerWM二CREATEWM-UtJilKVYAddandEditWK1DROPF3LESWMERASEBKGNDWMHELPINFOWMHSCROLLWMJCEYUPWM-KILLFOCUSWMLBUnONDBLCLK.EditExistimgWM^LBUnONDOWNWM-LBUTTONUPVAI^MOUSEMOVEWM^MOUSEWHEELWMMOVEWMPAIMTWM^RBUTTONDBLCLKWM_RBUTTONUPWM__SETCURSORWM_SETFOCUSVClassorobjecttohandle:CSMAKEView ]•AID__APP_ABOUTID_APP_EX1TIDEDITCOPYidIdpTcutFilterformessagesavailabletoChildWindowJWM_DROPFILES:Indicateswhenafileisdropped•«ir向¥ki0&处向¥ki0&处司;3S门晶皿七遍同□囿君,W〈endl 43[DQSckediWM2Debug- ▼露1幽)当文辑5Wftil)查看916八①IHV俎建51,CDd]1nakcU;c:w ▼H网classmcintic,CDd]1nakcU;c:w ▼H网classmcintic■侬 ■A—crtvUd-mDOSfinkc:resources♦jAixeleraloir_JBitmap♦-jOialog♦_|IconKtilMcnu Jli>RMAJNFRAMb♦-jStringTable♦_jToolbar♦_jVersion^21, -f'jjl4 rlZ▼国中。0 口俄省聃卜一相 二]M工剧&Lj瘟q&Wafl»•SNWOE -Wlnl2Debug ▼起妁 !H 」xj记助州• ;-nSNAKEresources,/_jAccelerator二二|Dialog♦,Jlean--JMenu当IDR_MAJN「RAME」SiringTrblejFoolbar」Version游戏帮助的关于此次设计三 ■・■・・•••••••••••••当文忡id«ea)s#ot)«Aeism爆建®工游戏帮助的关于此次设计三 ■・■・・•••••••••••••MessageMapsMemberVariables|Automation|ActiveXEvents|ClassInfo|Project: Classname:画「Snake 3|cDQ_SnakeViewD:\MFCVDQ_Snake\DOSnakeView.h,D:V-\OOSnakeView.cppObjectIDsMessageMapsMemberVariables|Automation|ActiveXEvents|ClassInfo|Project: Classname:画「Snake 3|cDQ_SnakeViewD:\MFCVDQ_Snake\DOSnakeView.h,D:V-\OOSnakeView.cppObjectIDs:icTifile^save-ID_NEXf_PANEIDPREV_PANEIDMCONTINUEIDMEXITIDMPAUSEMessages:UPDATECOMMANDUICOMMANDAddClass...▼AddFunctionDeleteFunctionEditCodeIDMSTARTMemberfumdions:wwVwOnKeyDown ONWMKEYDOWNOnPause ON」DM_PAUSE:COMMANDOnPreparePrintingOnRButtonDownON_WM_RBUTTONDOWNiA)0OnStart ONIDMSTARTXOMMANDWB WDescription:Handleacommand(frommenu,acceLcmdbutton]取消确定取消••厚SNAKEdlasses*1-CAboutDIg*"CMainFramie".TCSNAKFApp^-CSMAKEDoc•二CSNAKEVIc^♦AssedValidQjCSKAKEViewO。XSNAKEVIewfl♦DuinpfCDunipConh♦GEDowmcmfl.OnBeglnPrfntinqfCI典OnContinucO♦OnDrawfCDCapDCJ「OnFndPrinting(CD(&OnExitO♦OnlnitialUpdateO琳OnKeyDown(UINTi;■OnPouseQI於OnPrcparcPrintingl%OnARutlonDowofUi&OnSUrtQ出OnTimcr(UINTnIDf♦PreCrfefiteWiiid^w|r・i^jGlobalsvoidCSNAKEUiev;:0nTiner<UUNrnEDEveir>{I,IODO:Addyournessageharbdlercodehereand/orcalldefaultCUiew::Onli(wer€nlDLuent);>voidCSHAKEUiewi:zOnKeyOownfULNTaU^air,U1H1nRepCnttU1NJTnbJags><〃fObO:Addyournessagehanadl?rcodehereand/orcalldefaultCUiew::OnK^yDown(n(;hartnR^pent,ru〕;gt)|:)voidCSHAkEUiev::OnRftuttonboun(UIHInFlayrCPointpoint)(JfTODO:Addyuurmssdgp codeher©jnd/urcall<J?fjultCUi?w::OnRButtonDown(nFlag**.poirnt>:>udidCSHAKEUl^w::OnlAitidlUpd^t^()(cuipw::enln&tialUpditeO;JfTODO:Addyoursprcidli7rdcadi-hrrriind/orc<i)lthelidisrelms)uoidCSHAKFUie^::OnStdrt<)(JfTODO!AddycurcovwwandhartdlP-t1eo<dehpye)%OnCpntinucQ♦OnDraw(CDCtpDCl^♦OiiEtidPrinting(CDC访OnExitQ♦OnlnitialUpdateQ^♦OnKcyOownfUINTi能OnPauscQ$0OnPrcparcPrintingl*•OnRButtonDown(UI%OnSUrtQ^OnTimer(UINTnlOf・Pr-eWinduwp」GlobalsuoidCSNnKEVi(-w:-OnPdU^()77tOOO:AddyourcomandvoidCSNOKEViewuOnExitO〃TOD»0:AddyourcomanduoldCSNfilCEViPW12OnCcntim]p()//TODO:Addyourcorwundhandlerhan<11?rhandlercodecodecodi>hereherehere□-PSNAKEclasses用FCAboutDIg+CMainFrameffl»i*CSNAKEAppHFCSNAKEDoc-BjCSNAKEViev7©AssertValidQ%CSNAKEViewg。TSNAKEViewQ§Dump(CDumpContext&QGetDocumentQ%OnBeginPrinting(CDC*琳OnContinueQQOnDrawfCDC*pDC)海OnEndPrinting(CDC*pE询OnExitfl§oninitQeOnlnitialUpdateQ%OnKeyDown(UINTnCh?诲OnPauseJ琳OnPreparePrintingjCPri褥OnRButtonDown(UINTi%OnStartQ询OnTimerfUINTnIDEven§PreCreateV/indow(CRE.由・百Food*FSnakel!ll■[Clas:幽ResgFil或-va\不VAc--S5NAKEcl»sses+飞CAboutD扪11*CMdinTraitiE4CSNAKEApp0CSNAKEDdcE*ijcSNIAKEView物AesertValidO■CSNAKtViewQ*~CSNAKEViewg*DumpfCDumpCanteytA*GetDocum^ht^^Of>B^mPrintiFty(CDC4D*OnContinoeQiOn[)raw(CDC*pOq&OnEfidPr^tingfCDC*pl%OnExitQ•cnmhO♦Onlnii^lUpdwg为OnKEyDownfUINTnChi沁OnPauseQ尼.OnFteparePrintinglCPriC*OnllButtonDuwrifUtMTi匹OnStartOwOnTlmer|UlNTnlD.Even/PrcCiEntcWmdnw(CRE.W弋Food5nakc :*''.工厂 >〃CSNAKEUieuIHPLEMEHTJ)?NCREftTE(i;SHAKEUiewpCUiew>IBEGINMESSAGE_MAPf(;SHAKEUiew,GUieu)/7{<AFK__MS(;_MftPCGSNAKEUiew)CN_WM_TIMERC)aN_WM_KEV9GUNC){;N_WM__R8UTTUND0UNC)ONCOMMAND(I»MSTART,GflStart)ONCOMMAND(l^t1PAUSE,UflPause^COMMftNO(XftiUsjiUI.OnExit)^N-CaMMftNO(lBrrE5NriNUEs^nContlnu?>MSGMAP//StandardprintjngGonmands(5NCOMMAH(>CID_FILE.PRINT,CUiew::OnFilePrint>GNCOMMAND(ID_rILEPRINTDIREGT,GUiew::^riFilePrint)GNGOMMftHO(ID_FILEPRINTPREUIEW,GUiew::RnFilePrintPreuiew)ENDJ1ESSAGEMftPf)//讣冰Eifiov.gpp:iniplpiwntatlorjoftnu匕,MNKEuiwItlncludf"stddfx-h-MncludP"SHftKE.h"^include,'SHfiMECoc,h-UinclutlP"EMnNEVieuj.h;'ttifdcF_DE0UGttdeflot?hemDEBUGHEWfrunOuFrKI5_FILEstaticcbar_1tilSFtLE(]=__FILL;昵ndiFstructSnakiDintz-,y;lotlen;intdirectj>Snaue[t&J;占tnctFo:odlotX;inty;intisfcod;}pDDd;=10;Snake[0].y=10;

Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;=1;voidCSHAKEUiew::OnInitiallJpdat«()CViuw::^nInitialUpdate();Snake[^J.x=19;.y=19;Snake[1].x=111Snake[1].y=19;Snake[2],x=12;Snake[2].y=19;SnaRe[曰],direct=3;SnaRe[日],len=3;F口口d■;三F1m=1;//TOD。二Addyourspecializedcodehereand/orcirect!=2)Snake[0].direct=1;break;caseVK_DOWN:if(Snake[0].direct!=1)Snake[0].direct=2;break;caseVK_LEFT:if(Snake[0].direct!=4)Snake[0].direct=3;break;caseVK_RIGHT:if(Snake[0].direct!=3)Snake[0].direct=4;break;}CView::OnKeyDown(nChar,nRepCnt,nFlags);

CView::OnKeyDown(nChar,nRepCnt,nFlags);uoidCSKKEUitwlitdflK^^KiaurifUiINTiiClL.±ifUENTuRtpCfll1UI»Tili5ij//TO0O1前IdSwiteh(:i.^iar-0%UN_UPdil^m^eL>1.direi1 4].direcL-l^r^^k:川昌"诰的意见•cistVK_PdMit±HMMH*]//TO0O1前IdSwiteh(:i.^iar-0%UN_UPdil^m^eL>1.direi1 4].direcL-l^r^^k:川昌"诰的意见•cistVK_PdMit±HMMH*]3i「霓11-11窗nal»[9].iirtL-2;breM;小省相让不向上的tiaeW_LE『T二互"fn点侬[+]一ui「ui:m$■女“用JlrNL-3;hrMk://当蛇头本同看旧tts»UH_hIAHT=“[Sn^t*[0]屈士mH■♦外&■・“[B].d]『”l.-h±r*W;“可蛇现木同宜附,下石左--S”中M难技不总b时fa!;电时bK弟少才te晶量^7"£-时时-ss聚时计否的团陛与:"J不同F的时候.CUipwz:Ofikt>uDuMiC":iCii.i;.JikL>ptimpn.FLjy^);tUarw±^lbnKiry£uKijsiCilijrpnFtt^l;ii..ikF^jg1.}~OnKeyDown函数的第一个参数UINTnChar是接收用户键入的信息,然后我们用switch进行选择判断代码说明:Snake[0]代表的是蛇头,我们对蛇头的方向Snake[0].direct进行判断。caseVK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break;意思就是当Snake[0].direct的方向此时并不等于“下”的时候,才能做出“上”的操作动作,否则则忽略用户“向上”的操作按键效果Step3对OnRButtonDown()具体添加代码voidCSNAKEView::OnRButtonDown(UINTnFlags,CPointpoint){-1;i++)pDC->Rectangle(snake[i].x*20,snake[i].y*20,(snake[i].x+1)*20,(snake[i].y+1)*20);pDC->SelectObject(DrawBrush);voidCShAKEUieii;^oninit()CDE«pDf>GFtDG();CBrushDrawEru5h=CRGftC106,1BQ,100));CBrusii*Draibiu,li-pnc->SPlect0bjfct(fr[ifnrflnti=e;i<=Snake[B].len-1;i++)r)P^->REEtanglE(Snal<p[i].«^0,?5nakF[!].Q»(^nake[j]*3t+1)*2Ct(Sfiake[i],y+1)*2i)pBl->SeIectCbject(SraiyBrusti);代码说明:利用Windows给我们提供的CDC类来进行画图,我们首先用一个指向CDC类的指针去接受与该窗口相关联的DC句柄,然后用定义画刷一个DrawBrush对象,并且用RGB(100,100,100)来给画刷初始化颜色。并且用SelectObject(&DrawBrush);函数把对象画刷选入到设备描述表中,用for循环依次把贪吃蛇的3个节点画出来。voidfarrectangle(intleft,inttop,intright,intbottom);这个函数的的功能根据函数功能:该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充.Step5控件添加代码voidCSNAKEView::OnStart(){.");}voidCSNAKEView::OnExit(){.");exit0;}voidCSNAKEView::OnContinue()uoidCSNAKEUiew:iSriStartf)<//TODO:AddyoiUFconmandhandlercodehereSPtTimer(1,3曲。明,NULL);旺xhlgraqM⑶H”秒后开始游戏产);uoidCSNAKEUieui:liinPauspO<//TODO:AddyoiurconmandhandlercodehereKillTinpr(l);口f乂旭"叫睦巾(”游戏暂停uoidCSNAKEUieui:iS)nEicit()<//TODO:Addyourcommandhandlercodehere口NMcsaq白口口即”游戏结束..J);exit建;}uoidCSNAKEUi9ti:*SnCointinup()<//TODO:Addi^ourconmandhandlercodehereSetTimer(1,1B,HULL);}图类的输出基本上都是在视图类的OnDraw函数中处理的,系统会准备好入参,然后调用OnDraw函数本人也没有过多的去研究过次函数,仅知道一些皮毛。不过这里有个知识点那便是OnPaint()与OnDraw()的区别,OnPaint()派生于CWnd类,响应WM_PAINT消息。OnDraw是CView类的成员函数,并且没有消息响应功能,这就是为什么视图类没有只有OnDraw()而没有OnPaint()的原因。OnDraw()维护视图客户区(例如通过试表在视图中画图),而OnPaint()维护窗口的客户区voidCSNAKEView::OnDraw(CDC*pDC){CSNAKEDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);en==2)SetTimer(1,370,NULL);if(Snake[0].len==3)SetTimer(1,270,NULL);if(Snake[0].len==6)SetTimer(1,200,NULL);if(Snake[0].len==9)SetTimer(1,100,NULL);("得分:%d!”,(Snake[0].len-3)*10);*20<=37||Snake[0].y*20<=37||Snake[0].x*20>=462||Snake[0].y*20>=462){KillTimer(1);AfxMessageBox(soure);en>3)for(intsn=Snake[0].len-1;sn>0;sn--){if(Snake[0].x*20==Snake[sn].x*20&&Snake[0].y*20==Snake[sn].y*20){KillTimer(1);AfxMessageBox(soure);en-1].x*20,Snake[Snake[0].len-1].y*20,(Snake[Snake[0].len-1].x+1)*20,(Snake[Snake[0].len-1].y+1)*20);for(inti=Snake[0].len-1;i>0;i--){Snake[i].x=Snake[i-1].x;Snake[i].y=Snake[i-1].y;}irect==1)Snake[0].y--;if(Snake[0].direct==2)Snake[0].y++;if(Snake[0].direct==3)Snake[0].x--;if(Snake[0].direct==4)Snake[0].x++;pDC->SelectStockObject(BLACK_PEN);CBrushDrawBrush=(RGB(100,100,100));CBrush*Drawbrush=pDC->SelectObject(&DrawBrush);pDC->Rectangle(Snake[0].x*20,Snake[0].y*20,(Snake[0].x+1)*20,(Snake[0].y+1)*20);pDC->SelectObject(DrawBrush);*20==*20&&Snake[0].y*20==*20){Snake[0].len++;=1;Snake[Snake[0].len-1].x=Snake[Snake[0].len-2].x;Snake[Snake[0].len-1].y=Snake[Snake[0].len-2].y;}en-1;isfo>=0;isfo--)if(Snake[0].x*20==Snake[isfo].x*20&&Snake[0].y*20==Snake[isfo].y*20){=rand()%;=rand()%;}}while*20<70||*20<70||*20>430||*20>430);pDC->Rectangle*20,*20,+1)*20,+1)*20);=0;CView::OnTimer(nIDEvent);}voidCSHfiKEUiPW::OnTimer(UIHr//topuiAOdynurnu?GGm髀handlercodehere^ri/orc^lld?FaultCD£*uDC=GetDC(>;CStrinpgwi卜q:if^nake[P],Lpn==2)SetTiin0K<1,370TNUli.);/崂口速*/if^Snake[B].len==3)SetTi(iit>rtt,270,NULL);if^Snake[0],i.pn==6)SetTineK(1,203,NULL);if4Snahe[B].lefi=*9)SetTi.nier(.1,1ft0,NULL);soute.FnEatr称得到了:^dr'\(Snake[ft).iei:-3)*10);〃建界判断lf(Snake[0].x«2fi<=37||SftaKeL(l].y*20<^37|(Snake[BJ.s*2fi>=Hfi2||Snake[0]-y*20>=F462)Kiailiner(l);fifKMessageBoxCsnurF。蛇身相捶判断if^Snake[G],leri>3)For(intjii-Siiake[0].1en~i门C*小…)if(Snake[0].*2&^^£ftake[u].UEt&^nake[U]0==Snake[sn]'RlllTliwP(l).;OfxMessageBffxfsaurc");|iE)L»SelettStoekabjPdt(WHnL_PEM>;pD£->Rectangle(Snake[£nakp[9].1en-1]_K*28FSnake[Snalje(0]_l(?n-1]-^*28,(£nah&[Sriake[0j.ien-t] )*20,(^nakt[Snake .u+1)*^8):pDC->SelectStockObject(WHHEMPEN);pi)C->Rectaftgle(Snake[SnakeJenT].y*26f(Snake[Snake[0].len-1].x*1)»28,(Snake[Sriake[0].len-1J.y*1)<26);forinti=Snake[0j.l?n-1;i>O;i―)(Snake[].x=5nake[-1].x;Snakefi].p«Snake[i-1]9y;>〃行走方向判断if(Snake[0].direct»«1)Snake[8].y・一;if(Snake[O].direct==2)SnakeJ0].y**;if(Snake[O].direct»»3)Snake[fi].x-;if(Snake[9].direct==4)Snake[0]pDC->SelectStockObject(BLfiCK_PEN);CBrush»rawRKUSh«(RGB(100,-160.109));CBrush*»rawbrush=pDC->Select0bject(6Drau8rush);pDC->Rpctangle(Snakp[0]eX*20^Snake[0].y^B.CSrtakPtO].x*1)*20,(Snakef0].^*1)*20);pDC->Select0bject(DraMBruslO;〃判断吃豆的条件,撞到就吃iF(Snake[9].x»2O==Faad.x*20RRSnake[0].y*20=«Food.y*2B)<Snake[0].len**;Footf.isfood=1:Snake[Snake[O].Len-1].x-Snake[Snake[8].Len-2].x;Snake1$nake[G]J,pn-1].y=SnakM$nake[。].1en-2j.y;。如果食物被吃了就生成iF(Food.isfood»«1)<5rand((unsigned)tine(HULL));doLI1 ,',inn/c、iwt|AJIclassmeiDbers]*Timer “豆干◎C5HHS5voidCSWXKE¥iei::DtnIimer(UlUInlDEvsiK)7「藻音扬熊亍就更成if(Tuod.srandj(unsigned}tin<<NULL));dofur(intiifo1Snake!目孑.Ipti-1;isf^>jz0;ibfO'--)1F<Snake[fr]uf20--Snake{isf(.]□*20ggSnal<e[fl]・『甘20==Snake[isfc]»ij*20)Foad.x寸andt性之5;Fund7工〜冲式菖25:unile(Fonri.KK?ft<7&||Faortu*20<7iat|Fffod.x*20>ii3fijjFond^*2fi>*i3ft);|jliC->Rect<inqlEf(Fc-od.x»SOpiFDod.u*2U,(Fojjd.x*1)*20,(Food,i^*1)*20);rcud_LsfuinJ--0;uuiew::ontiRer(niriLue(ii):en==2)SetTimer(1,370,NULL);if(Snake[0].len==3)SetTimer(1,270,NULL);if(Snake[0].len==6)SetTimer(1,200,NULL);if(Snake[0].len==9)SetTimer(1,100,NULL);此段代码的作用是根据蛇的长度来进行SetTimer()函数的定义,可以根据长度来进行游戏难度的设定,如上代码分别370ms270ms200ms100ms进行一次新的移动。*20<=37||Snake[0].y*20<=37||Snake[0].x*20>=462||Snake[0].y*20>=462){KillTimer(1);AfxMessageBox(soure);}这里为什么要乘以20呢由于我们初始化的时候是Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;所以只是把贪吃蛇的起始位置“搬移”到20倍的位置当然可以等价于Snake[0].x=10*20;Snake[0].y=10*20;Snake[1].x=11*20;Snake[1].y=10*20;Snake[2].x=12*20;Snake[2].y=10*20;蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标X和y身体是不断增长的,所以用数组存放每一节的坐标en>3)for(intsn=Snake[0].len-1;sn>0;sn--){if(Snake[0].X*20==Snake[sn].X*20&&Snake[0].y*20==Snake[sn].y*20){KillTimer(1);AfXMessageBoX(soure);进行比较(之所以进行sn次那肯定是不包括蛇头而且蛇的长度也必须大于3才会发生自己咬自己的情况)KillTimer(l);是停止计时器;和之前的SetTime()对应而已AfxMessageBox(soure);这里不深究,总之就是输出一个原样输出内容pDC->SelectStockObject(WHITE_PEN);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论