




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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è)計類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;/注冊if (!RegisterClassEx(&wnd
6、Class)MessageBox(NULL,"注冊失敗","消息",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);/貪吃蛇移動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;/蛇會死嗎 返回1會死int CanDie(Snake *pSnake)Snake *ji = NULL;int x = 0,y = 0;ji = pSnake;whil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北海藝術(shù)設(shè)計學(xué)院《中外美術(shù)簡史與名作鑒賞》2023-2024學(xué)年第二學(xué)期期末試卷
- 保山中醫(yī)藥高等專科學(xué)?!度究椗c編結(jié)工藝》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2031年中國螺旋式自封袋模頭行業(yè)投資前景及策略咨詢研究報告
- 蚌埠經(jīng)濟(jì)技術(shù)職業(yè)學(xué)院《建設(shè)項目評估A》2023-2024學(xué)年第二學(xué)期期末試卷
- 白銀礦冶職業(yè)技術(shù)學(xué)院《基本體操(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- CJ/T 307-2009城鎮(zhèn)排水設(shè)施氣體的檢測方法
- 高性能內(nèi)核的動態(tài)內(nèi)存管理與緩存優(yōu)化-洞察闡釋
- 2024年新職工防寒過冬知識復(fù)習(xí)測試卷附答案
- DB13T 2959-2019 西洋菜栽培技術(shù)規(guī)程
- DB13T 5044-2019 桑白蚧綜合防控技術(shù)規(guī)程
- 高級思辨英語視聽說(浙江越秀外國語學(xué)院)知到智慧樹章節(jié)答案
- 場地平整施工組織設(shè)計-(3)模板
- -110-千伏輸變電工程地質(zhì)災(zāi)害危險性評估
- 13J927-3 機(jī)械式停車庫設(shè)計圖冊
- 中醫(yī)治療小兒遺尿
- 河北工程項目的勞務(wù)分包
- 食品報廢處理合作協(xié)議書
- DB11∕T 1017-2022 乘用車單位產(chǎn)品綜合能源消耗限額
- 2022-2023學(xué)年廣東省廣州市番禺區(qū)八年級下學(xué)期期末數(shù)學(xué)試題及答案
- 建筑垃圾消納處置場所運(yùn)營管理方案
- 湖北省武漢市2025屆高三一模英語試題試卷(官方答案版)解答題有過程含解析
評論
0/150
提交評論