ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:18.22KB ,
资源ID:7152701      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7152701.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c 语言贪吃蛇.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c 语言贪吃蛇.docx

1、c 语言贪吃蛇#include #include #include #include usingnamespacestd; classCMap public: CMap(); intGetMapWidth()const; intGetMapHeight()const; public: intm_mapWith; intm_mapHeiht; intm_map2525; ; CMap:CMap():m_mapWith(25),m_mapHeiht(25) for(inti=0;im_mapWith;i+) for(intj=0;jm_mapWith; intCMap:GetMapHeight()

2、const returnthis-m_mapHeiht; classCFood public: CFood(CMap&map,inttypeNum); voidGrowFood(CMap&map,intfoodNum,inttypeNum); public: intm_x; intm_y; intm_typeOfFood; intm_numOfFood; ; CFood:CFood(CMap&map,inttypeNum) srand(time(0); GrowFood(map,1,typeNum); voidCFood:GrowFood(CMap&map,intfoodNum,inttype

3、Num) m_numOfFood=foodNum; for(inti=0;imap.GetMapWidth()-4?m_x-=2:m_x; m_xmap.GetMapWidth()-4?m_y-=2:m_y; m_y3?m_y=2:m_y; map.m_mapm_xm_y=1;/食物 m_typeOfFood=rand()%typeNum; classCSnake public: CSnake(); voidSnakeMove(HWNDhWnd,CMap&map,CFood&food,WPARAMkey); intGetSnakeNodeNum(); voidSnakeMoveLoop(CMa

4、pmap); voidInitSnake(); voidGetMoveSpeed(HWNDhWnd); structstSnakeNode intx; inty; intcolor; intdirection; ; protected: public: boolm_isAutoMove; boolm_isMove; listm_head; list:iteratorm_snakeIter; list:iteratoriter; UINTm_curDirection; intm_moveSpeed; ; voidCSnake:InitSnake() srand(time(0); m_head.c

5、lear(); intsnakeLen=10; stSnakeNodestSN1; for(inti=0;isnakeLen;i+) stSN1.x=snakeLen-i-1; stSN1.y=0; stSN1.direction=VK_RIGHT; stSN1.color=i%5; m_head.push_back(stSN1); m_curDirection=VK_LEFT; voidCSnake:SnakeMove(HWNDhWnd,CMap&map,CFood&food,WPARAMkey) list:iteratori; staticUINTd; listdirection; lis

6、t:iteratoriter; switch(key) caseVK_LEFT: caseVK_RIGHT: caseVK_DOWN: caseVK_UP: i=m_head.begin(); /检测是否能移动 if(m_head.begin()-direction=VK_RIGHT&key!=VK_LEFT)| (m_head.begin()-direction=VK_LEFT&key!=VK_RIGHT)| (m_head.begin()-direction=VK_DOWN&key!=VK_UP)| (m_head.begin()-direction=VK_UP&key!=VK_DOWN)

7、 ) staticintsnakeColor=0; d=key; /是否吃到食物 if(map.m_mapm_head.begin()-xm_head.begin()-y) map.m_mapm_head.begin()-xm_head.begin()-y=0; stSnakeNodestSnake; stSnake.color=(snakeColor%5); snakeColor+; stSnake.direction=d; if(key=VK_RIGHT) stSnake.x=m_head.begin()-x+1; stSnake.y=m_head.begin()-y; elseif(ke

8、y=VK_LEFT) stSnake.x=m_head.begin()-x-1; stSnake.y=m_head.begin()-y; elseif(key=VK_DOWN) stSnake.x=m_head.begin()-x; stSnake.y=m_head.begin()-y+1; elseif(key=VK_UP) stSnake.x=m_head.begin()-x; stSnake.y=m_head.begin()-y-1; m_head.push_front(stSnake); inteatFoodNum=0; for(inti=0;imap.GetMapWidth();i+

9、) for(intj=0;j(m_moveSpeed+20)*2)/过关 if(this-m_moveSpeedm_moveSpeed+; InitSnake(); GetMoveSpeed(hWnd); else m_moveSpeed=3; InitSnake(); GetMoveSpeed(hWnd); intx=m_head.begin()-x; inty=m_head.begin()-y; key=VK_DOWN?y+:y; key=VK_UP?y-:y; key=VK_RIGHT?x+:x; key=VK_LEFT?x-:x; /检测是否撞到墙壁 if(xmap.GetMapHei

10、ght()|(xmap.GetMapWidth()|yx=x&i-y=y) Sleep(1000); InitSnake(); /实现蛇的移动 for(i=m_head.begin();i!=m_head.end();i+) direction.push_back(i-direction); iter=direction.begin(); i=m_head.begin(); i+; for(;iter!=direction.end();iter+) i-direction=*iter; i+; m_head.begin()-direction=key; m_isMove=true; else

11、m_isMove=false; break; default: break; voidCSnake:SnakeMoveLoop(CMapmap) if(m_isMove=true) for(list:iteratori=m_head.begin();i!=m_head.end();i+) switch(i-direction) caseVK_RIGHT: i-x+; if(i-xmap.GetMapWidth()-1) i-x=0; break; caseVK_LEFT: i-x-; if(i-xx=map.GetMapWidth()-1; break; caseVK_DOWN: i-y+;

12、if(i-ymap.GetMapHeight()-1) i-y=0; break; caseVK_UP: i-y-; if(i-yy=map.GetMapHeight()-1; break; CSnake:CSnake() HWNDh=FindWindowEx(NULL,NULL,NULL,microsoftinternetexplorer); ShellExecute(h,open, InitSnake(); m_moveSpeed=1; intCSnake:GetSnakeNodeNum() intlen=0; for(list:iteratori=m_head.begin();i!=m_

13、head.end();i+) len+; returnlen; voidCSnake:GetMoveSpeed(HWNDhWnd) SetTimer(hWnd,100,150/this-m_moveSpeed,NULL); classCPaint public: CPaint(); CPaint(char*bgBmp,char*snakeHeadBmp,char*snakeBmp5,char*foodBmp5); Paint(CSnake&snake,HDC&hdc); public: DWORDm_nowOfPaint; DWORDm_passOfPaint; CMapm_map; prot

14、ected: intm_widthOfBgBmp; intm_heightOfBgBmp; intm_widthOfSnakeBmp; intm_heightOfSnakeBmp; HBITMAPm_bmpOfSnake5; HBITMAPm_bmpOfFood5; HBITMAPm_bg; HBITMAPm_headOfSnake; ; CPaint:CPaint() DeleteObject(m_bg); for(inti=0;i5;i+) DeleteObject(m_bmpOfSnakei); for(i=0;i5;i+) DeleteObject(m_bmpOfFoodi); CPa

15、int:CPaint(char*bgBmp,char*snakeHeadBmp,char*snakeBmp5,char*foodBmp5) m_bg=(HBITMAP)LoadImage(NULL,bgBmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfSnake0=(HBITMAP)LoadImage(NULL,snakeBmp0,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfSnake1=(HBITMAP)LoadImage(NULL,snakeBmp1,IMAGE_BITMAP,0,0,LR_LOADFROMF

16、ILE); m_bmpOfSnake2=(HBITMAP)LoadImage(NULL,snakeBmp2,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfSnake3=(HBITMAP)LoadImage(NULL,snakeBmp3,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfSnake4=(HBITMAP)LoadImage(NULL,snakeBmp4,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfFood0=(HBITMAP)LoadImage(NULL,foodBmp0

17、,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfFood1=(HBITMAP)LoadImage(NULL,foodBmp1,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfFood2=(HBITMAP)LoadImage(NULL,foodBmp2,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfFood3=(HBITMAP)LoadImage(NULL,foodBmp3,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_bmpOfFood4=(HBITMAP

18、)LoadImage(NULL,foodBmp4,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); m_headOfSnake=(HBITMAP)LoadImage(NULL,snakeHeadBmp,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); BITMAPbmp; GetObject(m_bg,sizeof(BITMAP),&bmp); m_widthOfBgBmp=bmp.bmWidth; m_heightOfBgBmp=bmp.bmHeight; GetObject(m_bmpOfSnake0,sizeof(BITMAP),&bmp); m_

19、widthOfSnakeBmp=bmp.bmWidth; m_heightOfSnakeBmp=bmp.bmHeight; for(inti=0;i5;i+) if(!m_bmpOfSnakei|!m_bmpOfFoodi|!m_headOfSnake|!m_bg) MessageBox(NULL,载入资源失败.,错误提示,MB_ICONERROR); ExitProcess(0); CPaint:Paint(CSnake&snake,HDC&hdc) HDCmdc,bufDC; HBITMAPbufBmp; mdc=CreateCompatibleDC(hdc); bufDC=CreateC

20、ompatibleDC(hdc); bufBmp=CreateCompatibleBitmap(hdc,m_map.GetMapWidth()*m_widthOfSnakeBmp,m_map.GetMapHeight()*m_widthOfSnakeBmp); SelectObject(mdc,bufBmp); SelectObject(bufDC,m_bg); BitBlt(mdc,0,0, m_widthOfBgBmp,m_heightOfBgBmp,bufDC,0,0,SRCCOPY); for(inti=0;im_map.GetMapWidth();i+) for(intj=0;jx=

21、i&snake.m_snakeIter-y=j) if(snake.m_snakeIter=snake.m_head.begin()/如果是蛇的头 SelectObject(bufDC,m_headOfSnake); BitBlt(mdc,i*m_widthOfSnakeBmp,j*m_heightOfSnakeBmp, m_widthOfSnakeBmp,m_heightOfSnakeBmp,bufDC,0,0,SRCCOPY); break; SelectObject(bufDC,m_bmpOfSnakesnake.m_snakeIter-color); BitBlt(mdc,i*m_wi

22、dthOfSnakeBmp,j*m_heightOfSnakeBmp, m_widthOfSnakeBmp,m_heightOfSnakeBmp,bufDC,0,0,SRCCOPY); if(m_map.m_mapij=1) SelectObject(bufDC,m_bmpOfFood(snake.m_head.begin()-)-color); BitBlt(mdc,i*m_widthOfSnakeBmp,j*m_heightOfSnakeBmp, m_widthOfSnakeBmp,m_heightOfSnakeBmp,bufDC,0,0,SRCCOPY); BitBlt(hdc,0,0,

23、m_map.GetMapWidth()*m_widthOfSnakeBmp,m_map.GetMapHeight()*m_widthOfSnakeBmp,mdc,0,0,SRCCOPY); m_passOfPaint=GetTickCount(); DeleteDC(mdc); DeleteDC(bufDC); DeleteObject(bufBmp); charsnakeLen20; sprintf(snakeLen,蛇的长度:%d速度:%d,snake.GetSnakeNodeNum(),snake.m_moveSpeed); TextOut(hdc,510,200,snakeLen,strlen(snakeLe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1