版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人房屋抵押民間借貸借款協(xié)議文本3篇
- 2025年度平板車租賃運(yùn)輸合同風(fēng)險(xiǎn)評(píng)估與控制
- 個(gè)人租房合同標(biāo)準(zhǔn)版可打印
- 二零二五年度處理男子外遇妻子懷孕離婚撫養(yǎng)權(quán)糾紛調(diào)解合同
- 二零二五年度智慧家居項(xiàng)目報(bào)建代理與智能家居合同2篇
- 2025年度鐵礦石進(jìn)出口關(guān)稅及稅費(fèi)繳納合同規(guī)范
- 二零二五版礦產(chǎn)資源租賃居間代理合同3篇
- 二零二五年度企事業(yè)單位廉潔從業(yè)監(jiān)督員聘任合同
- 2025阿里巴巴智能物流機(jī)器人研發(fā)及銷售合同3篇
- 重慶文化藝術(shù)職業(yè)學(xué)院《應(yīng)用文寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 《大學(xué)生職業(yè)發(fā)展與就業(yè)指導(dǎo)》課程標(biāo)準(zhǔn)
- 第23課《出師表》課件(共56張)
- GB/T 3953-2024電工圓銅線
- 發(fā)電機(jī)停電故障應(yīng)急預(yù)案
- 接電的施工方案
- 常用藥物作用及副作用課件
- 幼兒阿拉伯?dāng)?shù)字描紅(0-100)打印版
- 社會(huì)組織等級(jí)評(píng)估報(bào)告模板
- GB/T 12173-2008礦用一般型電氣設(shè)備
- 新媒體研究方法教學(xué)ppt課件(完整版)
- 2020新版?zhèn)€人征信報(bào)告模板
評(píng)論
0/150
提交評(píng)論