貪吃蛇簡易代碼參考模板_第1頁
貪吃蛇簡易代碼參考模板_第2頁
貪吃蛇簡易代碼參考模板_第3頁
貪吃蛇簡易代碼參考模板_第4頁
貪吃蛇簡易代碼參考模板_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、#include<windows.h>#include "resource1.h"#include <stdio.h>#include <stdlib.h>#include <time.h>/蛇的結(jié)構(gòu)體typedef struct SNAKEint x;int y;struct SNAKE *pNext;Snake;/豆的結(jié)構(gòu)體typedef struct BEANint x;int y;struct BEAN *pNext;Bean;/函數(shù)原型void CreateSnake(Snake *pSnake);void dele

2、teAll(Snake *pSnake);void ShowSnake(Snake *pSnake);void CreateBean(Bean *pBean,Snake *pSnake);void ShowBean(Bean *pBean);void DeleteBean(Bean *pBean);void SnakeRun(Snake *pSnake);void SnakeGrowUp(Snake *pSnake);int CanEatBean(Snake *pSnake,Bean *pBean);int CanDie(Snake *pSnake);/char g_ClassName20 =

3、 "ClassName"LRESULT CALLBACK WndProc(HWND hwnd,UINT nMsg,WPARAM wParam,LPARAM lParam);HBITMAP hBitMap;1 / 11int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR pCmdLine, int nCmdShow)HBRUSH hBrush = CreateSolidBrush(RGB(100,100,410);HICON hIcon = LoadIcon(hInstance,MAKE

4、INTRESOURCE(IDI_wnd_icon);HICON hIconsm = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_wnd_iconsm);hBitMap = LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_wdnbitmap);/設(shè)計(jì)類WNDCLASSEX wndClass;wndClass.cbClsExtra = NULL;wndClass.cbSize = sizeof(wndClass);wndClass.cbWndExtra = NULL;wndClass.hbrBackground = hBrush;

5、wndClass.hCursor = LoadCursor(hInstance,IDC_ARROW);wndClass.hIcon = hIcon;wndClass.hIconSm = hIconsm;wndClass.hInstance = hInstance;wndClass.lpfnWndProc = WndProc;wndClass.lpszClassName = g_ClassName;wndClass.style = CS_HREDRAW|CS_VREDRAW;wndClass.lpszMenuName = NULL;/注冊(cè)if (!RegisterClassEx(&wnd

6、Class)MessageBox(NULL,"注冊(cè)失敗","消息",MB_OK);/創(chuàng)建HWND hwnd = CreateWindow(g_ClassName,"貪吃蛇",WS_OVERLAPPEDWINDOW,200,50,600+16,600+38,NULL,NULL,hInstance,NULL);if (!hwnd)MessageBox(NULL,"創(chuàng)建失敗!","消息",MB_OK);/顯示ShowWindow(hwnd,nCmdShow);/消息循環(huán)MSG msg;while (G

7、etMessage(&msg,NULL,0,0)TranslateMessage(&msg);/翻譯DispatchMessage(&msg);/回調(diào)函數(shù)return 0;HDC dc = NULL;Bean *pBean = NULL;Snake *pSnake = NULL;int VK = VK_RIGHT;LRESULT CALLBACK WndProc(HWND hwnd,UINT nMsg,WPARAM wParam,LPARAM lParam)switch (nMsg)case WM_CREATE:CreateSnake(&pSnake);/創(chuàng)建蛇

8、CreateBean(&pBean,pSnake);dc = GetDC(hwnd);break;case WM_KEYDOWN:switch (wParam)case VK_RETURN:/按下后就開始SetTimer(hwnd,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(hwnd,1);b

9、reak;break;case WM_TIMER:/*創(chuàng)建背景*/RECT rect;GetWindowRect(hwnd,&rect);HDC hmeDc = CreateCompatibleDC(dc);SelectObject(hmeDc,hBitMap);StretchBlt(dc,0,0,rect.right-rect.left,rect.bottom-rect.top,hmeDc,0,0,500,600,SRCCOPY);DeleteDC(hmeDc);/*背景創(chuàng)建結(jié)束*/各種函數(shù)if (CanDie(pSnake)KillTimer(hwnd,1);MessageBox(

10、NULL,"笨蛋,撞到自己身上,我死啦!","消息",MB_OK);if ( CanEatBean(pSnake,pBean) )SnakeGrowUp(pSnake);DeleteBean(&pBean);CreateBean(&pBean,pSnake);SnakeRun(&pSnake);elseSnakeRun(&pSnake);ShowSnake(pSnake);ShowBean(pBean);case WM_PAINT:/*創(chuàng)建背景*/RECT rect;GetWindowRect(hwnd,&rect

11、);HDC hmeDc = CreateCompatibleDC(dc);SelectObject(hmeDc,hBitMap);StretchBlt(dc,0,0,rect.right-rect.left,rect.bottom-rect.top,hmeDc,0,0,500,600,SRCCOPY);/*背景創(chuàng)建結(jié)束*/ShowSnake(pSnake);/顯示蛇ShowBean(pBean);/顯示豆DeleteDC(hmeDc);break;case WM_CLOSE:deleteAll(&pSnake);DeleteBean(&pBean);DestroyWindow(

12、hwnd);break;case WM_DESTROY:ReleaseDC(hwnd,dc);PostQuitMessage(0);break;case WM_QUIT:break;return DefWindowProc(hwnd,nMsg,wParam,lParam);/函數(shù)/創(chuàng)建蛇Create Snake()void CreateSnake(Snake *pSnake)Snake *u = NULL,*w = NULL;int i = 3;/開始的蛇有三截int x = 0;/蛇頭的初始位置int y = 0;/蛇尾的初始位置while (i-)u = (Snake *)malloc(s

13、izeof(Snake);u->pNext = NULL;u->x = x;u->y = y;x +=20;if (NULL = *pSnake)*pSnake = u;elsew->pNext = u;w = u;/*蛇的三屆創(chuàng)建完畢*/創(chuàng)建豆void CreateBean(Bean *pBean,Snake *pSnake)Snake *ji;int x = 0;/隨機(jī)的位置x坐標(biāo)int y = 0;/隨機(jī)的位置y坐標(biāo)srand(time(NULL);x = (unsigned)rand()%29)*20;y = (unsigned)rand()%29)*20;ji

14、 = pSnake;while(pSnake)if (x = pSnake->x) && (y = pSnake->y) )x = (unsigned)rand()%29)*20;y = (unsigned)rand()%29)*20;pSnake = ji;pSnake = pSnake->pNext;Bean *u;u = (Bean *)malloc(sizeof(Bean);u->pNext = NULL;u->x = x;u->y = y;*pBean = u;/刪掉全部蛇void deleteAll(Snake *pSnake)S

15、nake *del;while(*pSnake)del = *pSnake;(*pSnake) = (*pSnake)->pNext;free(del);/刪掉豆void DeleteBean(Bean *pBean)free(*pBean);*pBean = NULL;/顯示蛇void ShowSnake(Snake *pSnake)while (pSnake)Rectangle(dc,pSnake->x,pSnake->y,pSnake->x+20,pSnake->y+20);pSnake = pSnake->pNext;/顯示豆void ShowBea

16、n(Bean *pBean)Rectangle(dc,pBean->x,pBean->y,pBean->x+20,pBean->y+20);/貪吃蛇移動(dòng)void SnakeRun(Snake *pSnake)Snake *ji,/記錄變化的蛇頭 *round;/循環(huán)遍歷int x,/蛇頭的當(dāng)前位置x坐標(biāo)y;/蛇頭的當(dāng)前位置y坐標(biāo)ji = *pSnake;round = *pSnake;while (round->pNext)round = round->pNext;x = round->x;y = round->y;switch(VK)case

17、VK_UP:if (y = 0)y = 600;y -=20;break;case VK_DOWN:if (y=600)y = 0;y +=20;break;case VK_LEFT:if (x = 0)x = 600;x -= 20;break;case VK_RIGHT:if (x = 600)x = 0;x +=20;break;*pSnake = (*pSnake)->pNext;ji->x = x;ji->y = y;ji->pNext = NULL;round->pNext = ji;/下一步能吃到豆嗎? 返回1吃到int CanEatBean(Sna

18、ke *pSnake,Bean *pBean)while (pSnake->pNext)pSnake = pSnake->pNext;if (pSnake->x=pBean->x)&&(pSnake->y=pBean->y)return 1;return 0;/長大void SnakeGrowUp(Snake *pSnake)Snake *u;u = (Snake *)malloc(sizeof(Snake);u->pNext = NULL;u->x = pBean->x;u->y = pBean->y;while(pSnake->pNext)pSnake = pSnake->pNext;pSnake->pNext = u;/蛇會(huì)死嗎 返回1會(huì)死int CanDie(Snake *pSnake)Snake *ji = NULL;int x = 0,y = 0;ji = pSnake;whil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論