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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

贪吃蛇简易代码.docx

1、贪吃蛇简易代码#in clude#in elude resourcel.h#i nclude #i nclude #in clude /蛇的结构体typedef struct SNAKEint兀int y;struct SNAKE *pNext;Sn ake;/豆的结构体typedef struct BEANint兀int y;struct BEAN *pNext;Bea n;/函数原型void Creates nake(S nake *pS nake);void deleteAll(S nake *pS nake);void ShowS nake(S nake *pS nake);void

2、CreateBea n(Bea n *pBea n,Sn ake *pS nake);void ShowBea n(Bea n *pBea n);void DeleteBea n( Bea n *pBea n);void Sn akeRu n(Sn ake *pS nake);void Sn akeGrowUp(S nake *pS nake);int Can EatBea n(Sn ake *pS nake,Bea n *pBea n);int Ca nDie(S nake *pS nake);/char g_ClassName20 = ClassName;LRESULT CALLBACK

3、WndProc(HWND hwn d,UINT nM sg,WPARAM wPara m,L PARAM lParam); HBITMAP hBitMap;int CALLBACK WinMain (HINSTANCE hl nsta nee,HINSTANCE hPrel nsta nee,LPSTR pCmdLi ne,int n CmdShow)HBRUSH hBrush = CreateSolidBrush(RGB(100,100,410);HICON hlco n = Loadlco n(hl nsta nce,MAKEINTRESOURCE(IDI_w ndcon);HICON h

4、lco nsm = Loadlco n(hl nsta nce,MAKEINTRESOURCE(IDI_w ndcon sm);hBitMap = LoadBitmap(hI nsta nce,MAKEINTRESOURCE(IDB_wd nbitmap);/设计类WNDCLASSEX wn dClass;wn dClass.cbCIsExtra = NULL;wn dClass.cbSize = sizeof(w ndClass);wn dClass.cbWndExtra = NULL;wn dClass.hbrBackgro und = hBrush;wn dClass.hCursor =

5、 LoadCursor(hI nsta nce,IDC_ARROW);wn dClass.hIc on = hIc on;wn dClass.hIc onSm = hIc on sm;wn dClass.hI nsta nee = hln sta nee;wn dClass.lpfnWndProc = WndProc;wn dClass .l pszClassName = g_ClassName;wn dClass.style = CS_HREDRAW|CS_VREDRAW;wn dClass.lpszMe nu Name = NULL;/注册if (!RegisterClassEx (&wn

6、 dClass)MessageBox(NULL,注册失败”,”消息 ”,MB_OK);/创建HWND hwnd = CreateWi ndow(g_ClassName,”贪吃蛇,WS_OVERLAPPEDWINDOW,200,50,600+16,600+38,NULL,NULL, hln sta nee, NULL);if (!hw nd)MessageBox(NULL,创建失败!,消息 ”,MB_OK);/显示ShowWi ndow(hw nd, nCmdShow);/消息循环MSG msg;while (GetMessage(&msg,NULL,0,0)TranslateMessage(&

7、msg); / 翻译DispatchMessage(&msg); / 回调函数 return 0;HDC de = NULL;Bean *pBean = NULL;Snake *pSn ake = NULL;int VK = VK_RIGHT;LRESULT CALLBACK WndProc(HWND hwn d,UINT nM sg,WPARAM wPara m, LPARAM IParam) switch (nM sg)case WM_CREATE:CreateS nake(&pS nake); / 创建蛇CreateBea n(&pBea n,pSn ake);dc = GetDC(hw

8、 nd);break;case WM_KEYDOWN:switch (wParam)case VK_RETURN:/按下后就开始SetTimer(hw nd,1,150,NULL);break;case VK_UP:VK = VK_UP;break;case VK_DOWN:VK = VK_DOWN;break;case VK_LEFT:VK = VK_LEFT;break;case VK_RIGHT:VK = VK_RIGHT;break;case :KillTimer(hw nd,1);break;break;case WM_TIMER:/*创建背景*/RECT rect;GetWi nd

9、owRect(hw nd,&rect);HDC hmeDc = CreateCompatibleDC(dc);SelectObject(hmeDc,hBitMap);StretchBlt(dc,O,O,rect.right -rect.left,rect.bottom -rect.top,hmeDc,0,0,500,600,SRCCOPY);DeleteDC(hmeDc);/*背景创建结束*/各种函数if (Ca nDie(pS nake)KillTimer(hw nd,1);MessageBox(NULL,笨蛋,撞到自己身上,我死啦 r,消息”,MB_OK);if ( Can EatBea

10、n(pSn ake,pBea n)Sn akeGrowUp(pS nake);DeleteBea n(&pBea n);CreateBea n(&pBea n,pS nake);Sn akeRu n(&pSn ake);elseSn akeRu n(&pSn ake);ShowS nake(pS nake);ShowBea n( pBea n);case WM_PAINT:/*创建背景*/RECT rect;GetWi ndowRect(hw nd,&rect);HDC hmeDc = CreateCompatibleDC(dc);SelectObject(hmeDc,hBitMap);Str

11、etchBlt(dc,0,0,rect.right -rect.left,rect.bottom -rect.top,hmeDc,0,0,500,600,SRCCOPY);/*背景创建结束*/ShowSnake(pSnake); / 显示蛇ShowBean(pBean); / 显示豆DeleteDC(hmeDc);break;case WM CLOSE:deleteAII(&pSn ake);DeleteBea n(&pBea n);DestroyWi ndow(hw nd);break;case WM_DESTROY:ReleaseDC(hw nd,dc);PostQuitMessage(O

12、);break;case WM_QUIT:break;return DefWi ndowProc(hw nd, nM sg,wParam,IParam);/ 函数 / 创建蛇 Create Snake()void CreateS nake(S nake *pS nake)Snake *u = NULL,*w = NULL;int i = 3; /开始的蛇有三截int x = 0; /蛇头的初始位置int y = 0; /蛇尾的初始位置while (i -)u = (Sn ake *)maIIoc(sizeof(S nake);u-pNext = NULL;u-x = x;u-y = y;x +

13、=20;if (NULL = *pS nake)*pS nake = u;eIsew-pNext = u;w = u;/*蛇的三届创建完毕*/创建豆void CreateBea n(Bea n *pBea n,Sn ake *pS nake)Snake *ji;int x = 0; /随机的位置x坐标int y = 0; /随机的位置y坐标sran d(time(NULL);x = (un sig ned)ra nd()%29)*20;y = (un sig ned)ra nd()%29)*20;ji = pSn ake;while(pS nake)if (x = pSn ake-x) & (

14、y = pSn ake-y) x = (un sig ned)ra nd()%29)*20;y = (un sig ned)ra nd()%29)*20; pSn ake = ji;pSn ake = pSn akepNext;Bea n *u;u = (Bea n *)malloc(sizeof(Bea n);u-pNext = NULL;u-x = x;u-y = y;*pBea n = u;/删掉全部蛇void deleteAll(S nake *pS nake)Sn ake *del;while(*pS nake)del = *pS nake;(*pS nake) = (*pS nak

15、e)-pNext; free(del);/删掉豆void DeleteBea n( Bea n *pBea n)free(*pBea n);*pBean = NULL;/显示蛇void ShowS nake(S nake *pS nake)while (pS nake)Recta ngle(dc,pS nak&x,pS nak&y,pS nakex+20,pS nak&y+20); pSn ake = pSn akepNext;/显示豆void ShowBea n(Bea n *pBea n)Recta ngle(dc,pBea n-x,pBea n- y,pBear-x+20,pBea n-

16、 y+20);/贪吃蛇移动void Sn akeRu n(Sn ake *pS nake)Snake *ji, /记录变化的蛇头*rou nd; /循环遍历int x,蛇头的当前位置 x坐标y; /蛇头的当前位置 y坐标ji = *pS nake;round = *pS nake;while (round -pNext)round = round -pNext;x = roun d-x;y = roun d-y;switch(VK)case VK_UP:if (y = 0)y = 600;y -=20;break;case VK_DOWN:if (y=600)y = 0;y +=20;brea

17、k;case VK_LEFT:if (x = 0)x = 600;x -= 20;break;case VK_RIGHT:if (x = 600)x = 0;x +=20;break;*pS nake = (*pS nake)-pNext;ji-x = x;ji-y = y;ji-pNext = NULL;roun d -pNext = ji;/下一步能吃到豆吗?返回1吃到int Can EatBea n(Sn ake *pS nake,Bea n *pBea n)while (pS nake-pNext)pSn ake = pSn akepNext;if (pS nake-x=pBean-x

18、 )&(pS nake-y=pBea n-y) return 1;return 0;/长大void Sn akeGrowUp(S nake *pS nake)Sn ake *u;u = (Sn ake *)malloc(sizeof(S nake);u-pNext = NULL;u-x = pBean-x;u-y = pBea n-y;while(pS nake-pNext)pSn ake = pSn akepNext; pSn ake_pNext = u;/蛇会死吗返回1会死int Can Die(S nake *pS nake)Sn ake *ji = NULL;int x = 0,y = 0;ji = pSn ake;while (pS nake-pNext)pSn ake = pSn akepNext;x = pSn ake-x;y = pSn ake-y;switch(VK)case VK_UP:y -=20; break;case VK_DOWN:y +=20; break;case VK_LEFT:x -= 20; break;case VK_RIGHT:x +=20; break;while(ji -pNext)if (x = ji-x) & (y = ji_y) return 1;ji = ji-pNext;return 0;

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

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