版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include #include #include #include #include #include /使用控制顏色 光標(biāo)的函數(shù)#define X 150#define Y 35#define INIT (snake*)malloc(sizeof(snake)# pragma comment (lib, Winmm.lib)/ 定義一些全局變量struct Foodint x; /食物的橫坐標(biāo)int y;normalfood,passgrass27,poisonousfood,bedfood5,luckyfood;/分別表示普通食物 有毒食物 好食物/其中普通食物蛇身長(zhǎng)一節(jié) 毒食物蛇身斷
2、一半 好食物蛇自動(dòng)運(yùn)動(dòng)一段時(shí)間typedef struct Snake int x;/ 表示蛇的坐標(biāo)位置int y;struct Snake *next;snake;struct playerchar name 20;int score ;message100;char string 30;snake *head,*fp,*qq;char z; /記錄鍵盤輸入int i,add=10,score=0; /add為每次吃東西增加的節(jié)數(shù) int node,whyover=0,temp,snakedir=1; / node為蛇的節(jié)數(shù) whyover為記錄游戲結(jié)束的原因 temp記錄游戲困難程度 sn
3、akedir為蛇的方向int s; / s為控制毒草出現(xiàn)的次數(shù)的函數(shù)int suiji;/產(chǎn)生一個(gè)115的隨機(jī)數(shù)int gamespeed=200;int panduan=1; /這個(gè)是用來(lái)判斷蛇走的步數(shù) 以便出現(xiàn)毒草int trues=0,jilus,tongguancao=27;/記錄通關(guān)草的有關(guān)變量int trues1=0; /這個(gè)是輔助判斷蛇是否吃到毒草int jilus1; /記錄毒草的出現(xiàn)位置/聲明各個(gè)函數(shù)void color (const int color1); /控制輸出框的顏色 void gotoxy(int x,int y); /控制光標(biāo)的所在 void printfsc
4、ore(); / 打印出分?jǐn)?shù)void printfmap(); /打印地圖void gamestart_jiemian(); /打印游戲開(kāi)始界面void printfsnake(); /打印出蛇 即蛇的初始化void printffood(); /打印出普通食物void printffood1 (); /打印出有毒食物void printffood2 (); void HideCursor(); /隱藏鼠標(biāo)void gameover(); /游戲結(jié)束函數(shù)void notpasswall(); /不能穿墻void biteself () ; /不能咬到自己void snakemove(); /蛇
5、移動(dòng)int time ();void appearfood2();/出現(xiàn)毒草食物void shengji();/控制關(guān)卡的函數(shù)void printfgaming ();void denglv();/登錄游戲void baocun();/記錄分?jǐn)?shù)void duqu();void pass_grass(); /產(chǎn)生通關(guān)草的函數(shù)void lucky_food(); /產(chǎn)生幸運(yùn)食物的函數(shù)void baocunyouxi(); /保存游戲數(shù)據(jù)void duquyouxi();/讀取游戲數(shù)據(jù) 即讀取進(jìn)度void gaming();/鍵盤響應(yīng)int time()/用來(lái)計(jì)時(shí)clock_t t=clock()/
6、CLOCKS_PER_SEC;/記錄當(dāng)前程序已用時(shí)間return t;void color (const int color1) /控制輸出框的顏色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);void gotoxy(int x,int y) /控制光標(biāo)的所在COORD c=x,y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);void printfscore() / 打印出分?jǐn)?shù)char str50;color(11);gotoxy (1
7、05,12);sprintf(str,您現(xiàn)在的分?jǐn)?shù)是:%d, score);puts(str);gotoxy (105,20);void HideCursor() CONSOLE_CURSOR_INFO cursor_info = 105, 0; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);void denglv()gotoxy(20,20);puts (請(qǐng)輸入您的姓名 輸入后請(qǐng)按下enter鍵 請(qǐng)不要在您的名字里輸入空格鍵或者:符號(hào));flat1:gets(string);for (i=0;i20;i
8、+)while (string i= |string i=: |string i=r)gotoxy(20,20);puts(對(duì)不起 您輸入的名字含有不合格字符(空格鍵或“:”) 請(qǐng)重新輸入);goto flat1;void gamestart_jiemian() /設(shè)定游戲參與者一進(jìn)來(lái)時(shí)的界面system(mode con cols=153 lines=38); color(10); for (i=35;i75;i+=2) gotoxy(i,14); printf(*); for (i=35;i75;i+=2) gotoxy(i,20); printf(*); for (i=14;i=20;i
9、+) gotoxy(35,i); printf(*); for (i=14;i=20;i+) gotoxy(75,i); printf(*); gotoxy(37,16);/設(shè)置特定位置打印出不同的信息 system(title 貪吃蛇游戲 completed by strange_tang);puts(歡迎來(lái)到貪吃蛇游戲); gotoxy(37,18);puts(貪吃蛇游戲 completed by strange_tang); color(9);/使用不同的顏色來(lái)打印不同的信息 for (i=35;i75;i+=2) gotoxy(i,2); printf(*); for (i=35;i7
10、5;i+=2) gotoxy(i,8); printf(*); for (i=2;i=8;i+) gotoxy(35,i); printf(*); for (i=2;i=8;i+) gotoxy(75,i); printf(*); gotoxy (37,4); printf ( 控制方向 空格鍵為加速);gotoxy (38,6); puts(加速將會(huì)得到更高的分?jǐn)?shù));color(7); for (i=35;i75;i+=2) gotoxy(i,26); printf(*); for (i=35;i75;i+=2) gotoxy(i,32); printf(*); for (i=26;i=32
11、;i+) gotoxy(35,i); printf(*); for (i=26;i=32;i+) gotoxy(75,i); printf(*); gotoxy (37,28); puts(有三種食物 吃不同的食物會(huì)有不同命運(yùn)); gotoxy (37,30); puts(毒草 地雷 普通食物); color(12); for (i=80;i130;i+=2) gotoxy(i,7); printf(*); for (i=80;i130;i+=2) gotoxy(i,15); printf(*); for (i=8;i=15;i+) gotoxy(80,i); printf(*); for (
12、i=7;i=15;i+) gotoxy(130,i); printf(*); gotoxy(82,9); color(2); puts(綠為普通食物 吃后身體增長(zhǎng)一節(jié) 加10分); gotoxy(82,11); color(4); puts(紅為地雷 吃后身體長(zhǎng)度減半 分?jǐn)?shù)減半); gotoxy(82,13); color(6); puts(閃爍為毒草 吃后身體減一節(jié) 減10分); color (14);for (i=80;i130;i+=2) gotoxy(i,19); printf(*); for (i=80;i130;i+=2) gotoxy(i,27); printf(*); for
13、(i=19;i=27;i+) gotoxy(80,i); printf(*); for (i=19;i=27;i+) gotoxy(130,i); printf(*); gotoxy(82,21); puts(w s a d 也為方向鍵 分別控制上下左右 );gotoxy(82,23); puts(q e z c 也為方向鍵 分別控制左上 右上 左下 右下 ); gotoxy(82,25); puts(達(dá)到一定的分?jǐn)?shù)以及蛇達(dá)到一定節(jié)數(shù) 游戲難度會(huì)增加 );system(pause);system(cls); gotoxy(50,20);printf (請(qǐng)問(wèn)您是否有繼續(xù)上一次的游戲? (Y|N)
14、);char dd;dd=getch();if (dd=y|dd=Y) system(cls);duquyouxi();else system(cls); denglv(); system(cls);gotoxy(20,20);printf (請(qǐng)選擇難度 輸入1代表簡(jiǎn)單(easy) 輸入2代表普通(normal) 輸入3代表困難(difficult) 輸入4代表退出游戲(over) 輸入后請(qǐng)按下enter鍵n);scanf(%d, &temp);while (temp!=1 & temp!=2 & temp!=3 &temp!=4)gotoxy(20,20);printf (輸入錯(cuò)誤 請(qǐng)重新輸
15、入 輸入1代表簡(jiǎn)單 輸入2代表普通 輸入3代表困難 輸入4代表退出游戲 輸入后請(qǐng)按下enter鍵n);scanf(%d, &temp);if (temp=1) gamespeed=160;add=10;if (temp=2)gamespeed=150;add=13;if (temp=3)gamespeed=140;add=16;if (temp=4) exit(0);system(cls);void printfmap()if (temp=1) color(13);for(i=0;i100;i+=2) /打印出上下邊界gotoxy(i,0);printf();gotoxy(i,36);prin
16、tf();for(i=1;i36;i+) /打印出左右邊界gotoxy(0,i);printf();gotoxy(98,i);printf();if (temp=2) color(13);for(i=0;i100;i+=2) /打印出上下邊界gotoxy(i,0);printf();gotoxy(i,36);printf();for(i=1;i36;i+) /打印出左右邊界gotoxy(0,i);printf();gotoxy(98,i);printf();color (14);for (i=25;i=30;i+)gotoxy(66,i);printf();for (i=25;i=30;i+)
17、gotoxy(86,i);printf();for (i=66;i=86;i+=2)gotoxy(i,25);printf();for (i=66;i=86;i+=2)gotoxy(i,30);printf();color (14);for (i=5;i=10;i+)gotoxy(12,i);printf();for (i=5;i=10;i+)gotoxy(32,i);printf();for (i=12;i=32;i+=2)gotoxy(i,5);printf();for (i=12;i=32;i+=2)gotoxy(i,10);printf();if (temp=3) color(13);
18、for(i=0;i100;i+=2) /打印出上下邊界gotoxy(i,0);printf();gotoxy(i,36);printf();for(i=1;i36;i+) /打印出左右邊界gotoxy(0,i);printf();gotoxy(98,i);printf();color (14); /打印出上下兩個(gè)邊框圍墻for (i=25;i=30;i+)gotoxy(66,i);printf();for (i=25;i=30;i+)gotoxy(86,i);printf();for (i=66;i=86;i+=2)gotoxy(i,25);printf();for (i=66;i=86;i+
19、=2)gotoxy(i,30);printf();color (14);for (i=5;i=10;i+)gotoxy(12,i);printf();for (i=5;i=10;i+)gotoxy(32,i);printf();for (i=12;i=32;i+=2)gotoxy(i,5);printf();for (i=12;i=32;i+=2)gotoxy(i,10);printf();color (7); /打印出4條橫豎的圍墻for (i=1;i20;i-)gotoxy(18,i); printf ();color (3);for (i=96;i60;i=i-2)gotoxy(i,22
20、); printf ();for (i=2;ix=42; /蛇的位置初始化tail-y=35;tail-next=NULL; /蛇尾的節(jié)點(diǎn) 即尾節(jié)點(diǎn)為nullfor (i=1;inext=tail;head-x=42+i*2; /建立蛇身與蛇頭的聯(lián)系head-y=35;tail=head; /建立下一個(gè)節(jié)點(diǎn)while (tail-next!=NULL)gotoxy(tail-x,tail-y);color(1);printf (); /打印出蛇身tail=tail-next;node=2; /蛇一開(kāi)始時(shí)的節(jié)數(shù)void printffood () /打印出普通食物int d;if (temp=3
21、)d=5; /d用來(lái)記錄毒草的出現(xiàn)個(gè)數(shù) 以便判斷普通食物是否與毒草重合 if (temp=2)d=4; if (temp=1)d=3;int flag=1; /用來(lái)判斷srand(unsigned) time(NULL);while (1) flag=1;normalfood.x=rand()%95+2;normalfood.y=rand()%30+1;fp=head; while (fp-next!=NULL)if (fp-x=normalfood.x & fp-y=normalfood.y) / 判斷蛇身是否與食物重合flag=0;fp=fp-next;if (normalfood.x%2
22、!=0) /食物的橫坐標(biāo)必須為偶數(shù) 不然就不能與蛇頭對(duì)接flag=0;for (i=0;i11 & normalfood.y4 & normalfood.y11 & normalfood.x64 & normalfood.y24 & normalfood.y31 & normalfood.x11 & normalfood.y4 & normalfood.y11 & normalfood.x64 & normalfood.y24 & normalfood.y31 & normalfood.x=1 & normalfood.y20 & normalfood.y60 & normalfood.x=2
23、 & normalfood.x38)flag=0;for (i=0;inext!=NULL)if (fp-x=poisonousfood.x & fp-y=poisonousfood.y)flag=0;fp=fp-next;if (poisonousfood.x%2!=0)flag=0;if (luckyfood.x=poisonousfood.x & luckyfood.y=poisonousfood.y )flag=0;if (poisonousfood.x=normalfood.x & poisonousfood.y=normalfood.y)flag=0;for (i=0;i27;i+
24、)if (poisonousfood.x=passgrassi.x & poisonousfood.y=passgrassi.y)flag=0;for (i=0;i11 & poisonousfood.y4 & poisonousfood.y11 & poisonousfood.x64 & poisonousfood.y24 & poisonousfood.y31 & poisonousfood.x11 & poisonousfood.y4 & poisonousfood.y11 & poisonousfood.x64 & poisonousfood.y24 & poisonousfood.y
25、31 & poisonousfood.x=1 & poisonousfood.y20 & poisonousfood.y60 & poisonousfood.x=2 & poisonousfood.x38)flag=0;if (flag)break; gotoxy(poisonousfood.x,poisonousfood.y);color (4); printf ();HideCursor(); void printffood2() /產(chǎn)生毒草 if (temp=3)s=5;if (temp=2)s=4;if (temp=1)s=3;int flag=1;int jilu;/一會(huì)會(huì)用來(lái)判斷毒
26、草的位置是否相互重合for (i=0;inext!=NULL)if (fp-x=bedfoodi.x & fp-y=bedfoodi.y)flag=0;fp=fp-next;if (bedfoodi.x%2!=0)flag=0;if (bedfoodi.x=normalfood.x & bedfoodi.y=normalfood.y) /普通食物flag=0;if (bedfoodi.x=poisonousfood.x & bedfoodi.y=poisonousfood.y)/地雷flag=0;if (luckyfood.x=bedfoodi.x & luckyfood.y=bedfoodi
27、.y )/幸運(yùn)食物flag=0;for (int v=0;v11 & bedfoodi.y4 & bedfoodi.y11 & bedfoodi.x64 & bedfoodi.y24 & bedfoodi.y31 & bedfoodi.x11 & bedfoodi.y4 & bedfoodi.y11 & bedfoodi.x64 & bedfoodi.y24 & bedfoodi.y31 & bedfoodi.x88 )flag=0;if (bedfoodi.x=70 & bedfoodi.y=1) | (bedfoodi.x=18 & bedfoodi.y20)flag=0;if (bedf
28、oodi.y=22 & bedfoodi.x60) | (bedfoodi.y=13 & bedfoodi.x=2)flag=0;jilu=i;if (i0)/判斷毒草的位置是否相互重合if (bedfoodi-1.x=bedfoodi.x & bedfoodi-1.y=bedfoodi.y)flag=0;for (int j=2; j=jilu; j+)if (bedfoodjilu.x=bedfood0.x & bedfoodjilu.y=bedfood0.y)flag=0; if (i=3)if (bedfood3.x=bedfood1.x & bedfood3.y=bedfood1.y
29、)flag=0;if (i=4)if (bedfood4.x=bedfood1.x & bedfood4.y=bedfood1.y)|(bedfood4.x=bedfood2.x&bedfood4.y=bedfood2.y)flag=0;if (flag)break;gotoxy(105,30) ;color(6);for (i=0;is;i+) gotoxy(bedfoodi.x,bedfoodi.y);printf (); void appearfood2()/出現(xiàn)毒草 以及幸運(yùn)食物int yanse; /隨機(jī)數(shù) 出現(xiàn)顏色if (temp=1)if ( panduan=75)printff
30、ood2();/控制出現(xiàn)毒草的函數(shù)lucky_food();/控制幸運(yùn)食物的出現(xiàn)srand (time(0);if (panduan75) /毒草出現(xiàn)后就控制其顏色的變化for (i=0;is;i+) yanse=rand()%15+1;color(yanse);gotoxy(bedfoodi.x,bedfoodi.y);printf (); if (panduan=100) panduan=0;gotoxy(luckyfood.x,luckyfood.y); printf ( );luckyfood.x=150;luckyfood.y=36;for (i=0;is;i+)gotoxy(bed
31、foodi.x,bedfoodi.y); printf ( );for (i=0;is;i+)bedfoodi.x=104;bedfoodi.y=1;if (temp=2)if ( panduan=60)printffood2();lucky_food();srand (time(0);if (panduan60) /毒草出現(xiàn)后就控制其顏色的變化for (i=0;is;i+) yanse=rand()%15+1;color(yanse);gotoxy(bedfoodi.x,bedfoodi.y);printf (); if (panduan=100) panduan=0; gotoxy(luc
32、kyfood.x,luckyfood.y); printf ( );luckyfood.x=150;luckyfood.y=36;for (i=0;is;i+)gotoxy(bedfoodi.x,bedfoodi.y); printf ( );for (i=0;is;i+)bedfoodi.x=104;bedfoodi.y=1;if (temp=3)if ( panduan=50)printffood2();lucky_food();srand (time(0);if (panduan50) /毒草出現(xiàn)后就控制其顏色的變化for (i=0;is;i+) yanse=rand()%15+1;color(yanse);gotoxy(bedfoodi.x,bedfoodi.y);printf (); if (panduan=100) panduan=0;gotoxy(luckyfood.x,luckyfood.y); printf ( );luckyfood.x=150;luckyfood.y=36;for (i=0;is;i+)gotoxy(bedfoodi.x,bedfoodi.y); printf ( );for (i=0;is;i+)bedfoodi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高鐵保健員聘用協(xié)議
- 網(wǎng)絡(luò)游戲玩家行為規(guī)范
- 基礎(chǔ)建設(shè)水利施工合同范本
- 產(chǎn)業(yè)升級(jí)二手廠房買賣合同模板
- 城市建設(shè)關(guān)聯(lián)交易公共資源分配
- 城市綠化景觀改造養(yǎng)護(hù)合同
- 地下綜合管廊工程勞務(wù)招標(biāo)
- 礦山環(huán)保認(rèn)證項(xiàng)目施工合同模板
- 地質(zhì)災(zāi)害治理合同
- 土地管理中的公民參與機(jī)制
- 安置房項(xiàng)目二次結(jié)構(gòu)磚砌體工程專項(xiàng)施工方案培訓(xùn)資料
- SB/T 10756-2012泡菜
- GB/T 36393-2018土壤質(zhì)量自然、近自然及耕作土壤調(diào)查程序指南
- GB/T 3045-2017普通磨料碳化硅化學(xué)分析方法
- 新疆維吾爾自治區(qū)公共建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)實(shí)施細(xì)則2023
- 2022年西藏自治區(qū)中考英語(yǔ)真題卷(含答案與解析)
- 醫(yī)院輸血質(zhì)量管理考核標(biāo)準(zhǔn)
- 七年級(jí)語(yǔ)文上冊(cè):15、《古代詩(shī)歌四首》教案
- 氣道評(píng)估與處理課件
- 腦血管病的介入診療課件
- RCS-9626CN電動(dòng)機(jī)保護(hù)測(cè)控裝置
評(píng)論
0/150
提交評(píng)論