




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言編寫貪吃蛇此貪吃蛇是我剛學(xué)習(xí)c語言的時候做的,很手生,寫得也不好,而且bug比較多,但做為一般的畢業(yè)設(shè)計或者是課堂設(shè)計是夠用了,而且因為不是很專業(yè),但還是希望各位童鞋不要抄襲,畢竟知識是自己的,在看懂了的前提下,自己可以參考著寫一遍,弄懂了才是自己的。廢話不說了,大家都懂,現(xiàn)在進入正題。在vs2010環(huán)境下編繹通過,但不保證在其他平臺上能通過。僅做為參考。具體能實現(xiàn)的功能:方向控制,吃食物,食物有兩種,有毒的,吃了會減少生命值,還有一種是無毒的,吃了會長身體,撞墻死亡,碰身體死亡,死亡重新開始游戲。首先附上一張游戲截圖,僅為初學(xué)者參考,高手可以點擊右上角,謝謝!全部代碼為在三個文件里面,
2、分別為header.h,src.c, main.c,下面分別發(fā)出代碼及簡單的注解:一 header.h,這是存放的頭文件以及函數(shù)聲明,就不解釋了,直接放代碼;#include<stdio.h>#include<windows.h>#include<math.h>#include <conio.h>#include <string.h>int xy250;int i;int food2;int pois25;int wall(void);int init(int len);/int way(int flag);int mov(int k
3、ey);int print(int ret);int run(int ret);int foods(void);int grow(void);int direction(void);int die(void);int or(void);int poi(void);int gotoxy(int x,int y);二、資源文件src.c,這里存放的是函數(shù)的實現(xiàn)方法:#include"header.h"int flag=0;int len=5;int key=0;char name="name"int core=0;int life=3;/初始化墻int wa
4、ll(void)int i=0;int j=0;for(i=0;i<30;i+)for(j=0;j<30;j+)if(i=0)printf("* ");if(j=29)printf("n");if(i>0&&i<29)if(j=0)printf("* ");if(j=29)printf("*n");if(j>0&&j<29)printf(" ");if(i=29)printf("* ");/初始化蛇屬性int
5、 init(int len)life=3;core=0;flag=0;len=5;key=0;gotoxy(8,15);printf("請輸入你的大名,按Enter鍵開始游戲:");scanf("%s",&name);gotoxy(62,2);printf("-");gotoxy(62,4);printf("name:%s",name);gotoxy(8,15);printf(" ");gotoxy(62,6);printf("方向控制說明:");gotoxy(62,
6、7);printf("w:向上 s:向下");gotoxy(62,8);printf("a:向左 d: 向右");gotoxy(62,10);printf("表示食物");gotoxy(62,11);printf("¤表示有毒");gotoxy(62,12);printf("分?jǐn)?shù):%d",core);gotoxy(62,14);printf("生命值:");for(i=0;i<3;i+)printf("");xy00=22;xy10=22;
7、for(i=1;i<len;i+)xy0i=xy0i-1-2;xy1i=xy1i-1;print(len);for(i=0;i<5;i+)pois0i=2*(rand()%(28)+1);pois1i=rand()%(28)+1;gotoxy(pois0i,pois1i);printf("¤");/蛇移動int run(int ret)for(i=ret-1;i>0;i-)xy0i=xy0i-1;xy1i=xy1i-1;/打印蛇int print(int ret)int i=0;for(i=0;i<ret;i+)if(i=0)gotoxy(
8、xy00,xy10);printf("");elsegotoxy(xy0i,xy1i);printf("");/定義窗口屬性int gotoxy(int x,int y)COORD coord = x, y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);/蛇移動int mov(int k)switch(k)case 1:if(2 != flag )run(len);xy00=xy00-2;flag=1;break;case 2:if(1 != flag)run(len);
9、xy00=xy00+2;flag=2;break;case 3:if(4 != flag)run(len);xy10=xy10-1;flag=3;break;case 4:if(3 != flag)run(len);xy10=xy10+1;flag=4;break;/生成食物int foods(void)food0=2*(rand()%(28)+1);food1=rand()%(28)+1;gotoxy(food0,food1);printf("");/蛇吃食物并成長int grow(void)if(xy00=food0&&xy10=food1)len+;f
10、oods();core=core+100;gotoxy(62,12);printf("分?jǐn)?shù):%d",core);return len;/根據(jù)鍵值獲取蛇的移動方向int direction(void)if(_kbhit()key=_getch();if('a'=key && flag!=2)flag=1;else if('d'=key && flag!=1)flag=2;else if('w'=key && flag!=4)flag=3;else if('s'=ke
11、y && flag!=3)flag=4;return flag;/撞強和碰尾死亡方式int die(void)if(xy00=0 | xy00=58 |xy10=0 |xy10=29)return -1;for(i=1;i<len;i+)if(xy00=xy0i && xy10=xy1i)return -2;/死亡后由玩家決定是否繼續(xù)游戲int or(void)int key;while(1)if(_kbhit()key=_getch();if('y'=key)return 1;if('n'=key)return 2;/吃有
12、毒的食物,生命減少至0;int poi(void)for(i=0;i<5;i+)if(xy00=pois0i && xy10=pois1i)life-;if(life=0)gotoxy(62,14); printf(" ");gotoxy(62,14);printf("生命值:");return -3;gotoxy(62,14); printf(" ");gotoxy(62,14);printf("生命值:");for(i=1;i<=life;i+)printf(""
13、);pois0i=2*(rand()%(28)+1);pois1i=rand()%(28)+1;gotoxy(pois0i,pois1i);printf("¤");三、主函數(shù)main.c文件#include"header.h"int main(void)int len=5;int i;int flag=2;int kill;int ret;int ret2;system("COLOR 0C");/窗口顏色system("MODE CON: COLS=99 LINES=30");/窗口寬度和高度in:len
14、=5;flag=2;/初始化移動方向kill=1;ret=0;ret2=0;gotoxy(0,0);/光標(biāo)移動到坐標(biāo)(0,0)的位置wall();/打印圍墻/初始化蛇init(5);/初始化蛇/測試語句/gotoxy(58,29);/printf("這");foods();/調(diào)用生成食物的函數(shù),生成一個食物while(1)gotoxy(xy0len-1,xy1len-1);printf(" ");/蛇移動時,蛇尾前移時擦去原蛇尾mov(flag);/控制蛇移動方向len=grow();/蛇生長,并返回蛇的長度ret2=poi();/蛇吃到有毒的食物,如果
15、生命值為0,剛死亡if(ret2=-3)goto out3;flag=direction();/根據(jù)鍵值,得到蛇移動方向kill=die();/蛇死亡判斷,撞墻和碰尾死亡;print(len);/打印當(dāng)前長度的蛇if(-1=kill)goto out1;/撞墻死亡if(-2=kill)goto out2;/碰尾死亡Sleep(300-5*len);/簡單延時out1:gotoxy(15,15);printf("恭喜你撞墻而死!按y重新開始,按n結(jié)束游戲");in2:ret=or();/死亡后由玩家決定是否繼續(xù)游戲,按y繼續(xù)游戲,按n退出游戲if(1=ret)/復(fù)活后游戲,把
16、蛇身置空for(i=0;i<50;i+)xy0i=NULL;xy1i=NULL;goto in;/回到游戲開始的地方,開始游戲if(2=ret)goto _out;/退出游戲while(1);out2:gotoxy(15,15);printf("恭喜你碰尾而死!按y重新開始,按n結(jié)束游戲");goto in2;out3:gotoxy(15,15);printf("恭喜你中毒而死!按y重新開始,按n結(jié)束游戲");goto in2;while(1);_out:return -1;別外附上一些必要的關(guān)鍵代碼:#include <windows.h&
17、gt;#include <math.h>void gotoxy(int x, int y)/光標(biāo)跳轉(zhuǎn)COORD coord = x, y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);/隨機生成坐標(biāo)rand()%(ORDINATE_2-ORDINATE_1)/窗口屬性設(shè)置system("COLOR 09");system("MODE CON: COLS=99 LINES=27");/得到鍵盤輸入/key = _getch();if (_kbhit()/有輸入/
18、是否按下按鍵,并彈起以及附上控制臺的關(guān)鍵代碼:#include "stdio.h"#include "Windows.h"int main() HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); / 獲取控制臺句柄 SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED); / 設(shè)置為紅色 printf("把這句話顏色變成紅色n"); SetConsoleTextAttribute(handle, FORE
19、GROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);/ 設(shè)置為黃色 printf("把這句話顏色變成黃色n");0.設(shè)置控制臺輸出行數(shù)和列數(shù)system("mode con:cols=100 lines=20000");1.改變整個控制臺的顏色用 system("color 0A");其中color后面的0是背景色代號,A是前景色代號。各顏色代碼如下:0=黑色1=藍色2=綠色3=湖藍色4=紅色5=紫色6=黃色7=白色8=灰色9=淡藍色A=淡綠色B=淡淺綠色C=淡紅色D=淡紫色E=
20、淡黃色F=亮白色2.改變下一個輸出或者輸入字體和背景的顏色采用SetConsoleTextAttribute函數(shù),如White on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);Red on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREG
21、ROUND_RED);Green on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_GREEN);Yellow on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN);Blue on Black:SetConsoleTextAttribute(GetStdHandl
22、e(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_BLUE);Magenta on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_BLUE);Cyan on Black:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),F(xiàn)OREGROUND_INTENSITY |FOREGROUND_GREEN |
23、FOREGROUND_BLUE);Black on Gray:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |BACKGROUND_INTENSITY);Black on White:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);Red on White:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE |FOREGROUND_RED);等等。需要引入頭文件:win
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第八章+認識國家(美國、巴西)(串講課件)-2024-2025學(xué)年七年級地理下學(xué)期期末考點大串講(中圖版北京2024)
- GCP質(zhì)量管理精要
- Brand KPIs for online betting:Betfair in Brazil-英文培訓(xùn)課件2025.5
- 2025年(完整版)小升初數(shù)學(xué)公式
- AI大模型賦能區(qū)域醫(yī)療數(shù)字化醫(yī)聯(lián)體建設(shè)方案
- 華為公司干部管理與培養(yǎng)(一)7P
- 山東省德州市武城縣五校聯(lián)考2024-2025學(xué)年八年級下學(xué)期第二次月考數(shù)學(xué)試卷(答案不完整)
- 先進先出試題及答案
- 武漢理化試題及答案詳解
- 廣東省東莞市光正實驗學(xué)校2024-2025學(xué)年高一下學(xué)期期中考試英語試卷(解析版)
- 北郵社機械制圖測繪實訓(xùn)教學(xué)資源包課件
- 風(fēng)洞試驗與強度驗證
- 3輸變電工程施工質(zhì)量驗收統(tǒng)一表式(變電工程電氣專業(yè))-2024年版
- 秀場內(nèi)外-走進服裝表演藝術(shù)智慧樹知到答案2024年武漢紡織大學(xué)
- 川民版《勞動教育》六下 第7課《制作皮影》教學(xué)設(shè)計
- 業(yè)財一體信息化智慧樹知到答案2024年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院、??诮?jīng)濟學(xué)院、河南財政金融學(xué)院、麗水職業(yè)技術(shù)學(xué)院、新道科技股份有限公司
- 3人股份協(xié)議書模板
- GB 20182-2024商用車駕駛室外部凸出物
- 2024年北京英語考試專題考題及詳細答案
- GB/T 24067-2024溫室氣體產(chǎn)品碳足跡量化要求和指南
- 禮品行業(yè)供應(yīng)鏈管理研究
評論
0/150
提交評論