用c語言寫貪吃蛇
#include
#include
#include /*引用的庫函數(shù)*/
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b/*宏定義鍵名*/
#define N 200
int i,key;
int level;/*游戲等級*/
int score=0;/*得分*/
int gamespeed;/*游戲速度*/
struct Food
{
int x;/*食物的橫坐標(biāo)*/
int y;/*食物的縱坐標(biāo)*/
int yes;/*判斷是否要出現(xiàn)食物的變量*/
}food;/*食物的結(jié)構(gòu)體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節(jié)數(shù)*/
int direction;/*蛇移動方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;/*蛇的結(jié)構(gòu)體*/
void Choicelevle(void);/*選擇游戲等級*/
void Init(void);/*圖形驅(qū)動*/
void Close(void);/*圖形結(jié)束*/
void DRAW(void);/*游戲區(qū)域*/
void GameOver(void);/*結(jié)束游戲*/
void GamePlay(void);/*玩游戲具體過程*/
void PrScore(void);/*輸出成績*/
/*主函數(shù)*/
void main(void)
{
Init();/*圖形驅(qū)動*/
Choicelevle();/*選擇游戲等級*/
DRAW();/*游戲區(qū)域*/
GamePlay();/*玩游戲具體過程*/
Close();/*圖形結(jié)束*/
}
/*圖形驅(qū)動*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"\\turboc2"); /*初始化圖形系統(tǒng)*/
cleardevice(); /*清除圖形界面*/
}
/*選擇游戲等級*/
void Choicelevle(void)
{char name[20];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,"Snake");setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,"please put in your English name:");outtextxy(200,270,"Choice levle from 1-9.");outtextxy(300,320,"name:yangzilong");/*制作人姓名*/outtextxy(300,350,"number:0902060226");/*制作人學(xué)號*/outtextxy(300,380,"class:computer science 0602");/*制作人班級*/getch();printf("please putin your name:");gets(name);printf("please choice levle:");scanf("%d",&level);gamespeed=100000-400*level-300*level*level;if(level>9||level<1){cleardevice(); /*清除圖形界面*/setcolor(YELLOW); /*設(shè)置字體顏色*/settextstyle(0,0,2); /*設(shè)置字體類型*/outtextxy(150,200,"level input error"); /*顯示文本*/getch();level=1;}
}
void DRAW(void)
{cleardevice(); /*清屏*/setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/rectangle(45,45,465,325);}
/*玩游戲具體過程*/
void GamePlay(void)
{setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/randomize();/*隨機數(shù)發(fā)生器*/food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/snake.life=0;/*活著*/snake.direction=1;/*方向往右*/snake.x[0]=320;snake.y[0]=240;/*蛇頭*/snake.x[1]=330;snake.y[1]=240; /*蛇的第二節(jié)位置*/snake.node=3;/*節(jié)數(shù)*/PrScore();/*輸出得分*/while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/{while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/{if(food.yes==1)/*需要出現(xiàn)新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*畫面上有食物了*/}
if(food.yes==0)/*畫面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每個環(huán)節(jié)往前移動*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個方向,通過這個控制來移動蛇頭*/
switch(snake.direction)
{
case 1: snake.x[0]+=10;break;
case 2: snake.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*顯示失敗*/
snake.life=1; /*蛇死*/
break;
}
}
/*如果蛇頭碰到墻壁,蛇頭從對面墻出來*/
if(snake.x[0]<50)
{snake.x[0]=450;/*如果蛇頭越過左邊界,則從右邊界進入*/snake.y[0]=snake.y[0];/*縱坐標(biāo)不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}
{
setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/
bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/
}
}
else
if(snake.x[0]>450)
{snake.x[0]=50;/*如果蛇頭越過右邊界,則蛇頭從左邊界進入*/snake.y[0]=snake.y[0];/*縱坐標(biāo)不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}
{
setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/
bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/
}
}
else
if(snake.y[0]<60)
{snake.y[0]=320;/*如果蛇頭越過上邊界,則從下邊界進入*/snake.x[0]=snake.x[0];/*橫坐標(biāo)不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}
{
setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/
bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/
}
}
else
if(snake.y[0]>320)
{snake.y[0]=60;/*如果蛇頭越過下邊界,則從上邊界進入*/snake.x[0]=snake.x[0];/*橫坐標(biāo)不變*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進*/}
{
setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/
bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/
}
}
if(snake.life==1)/*如果蛇死就跳出內(nèi)循環(huán),重新開始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
setcolor(0);/*把畫面上的食物東西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10); /*用當(dāng)前線型和顏色畫一矩形*/
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/
snake.node++;/*蛇的身體長一節(jié)*/
food.yes=1;/*畫面上需要出現(xiàn)新的食物*/
score+=10; /*每吃掉一食物,得分累加10分*/
if(score%100==0)
{level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一級,速度加快*/PrScore();/*輸出新得分*/setcolor(YELLOW); /*設(shè)置字體顏色*/settextstyle(0,0,4); /*設(shè)置字體類型*/outtextxy(150,200,"LEVEL UP"); /*顯示文本*/if(level==10){level=1,gamespeed=100000-400*level-300*level*level;}
delay(6000000);
delay(6000000);
delay(6000000);
delay(6000000);
delay(6000000);
delay(6000000);
delay(6000000);
bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/
}
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed); /*控制游戲速度*/
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/ /*用黑色去除蛇的的最后一節(jié)*/
if(snake.life==1)/*如果蛇死就跳出循環(huán)*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*游戲結(jié)束*/
void GameOver(void)
{
cleardevice(); /*清屏*/
PrScore();
setcolor(RED); /*設(shè)置字體顏色*/
settextstyle(0,0,4); /*設(shè)置字體類型*/
outtextxy(200,200,"GAME OVER"); /*顯示文本*/
getch();
}
/*輸出成績及游戲等級*/
void PrScore(void)
{
char str1[20];/*設(shè)置字符型數(shù)組*/
setfillstyle(SOLID_FILL,0);
bar(50,15,390,35); /*填充矩形框*/
setcolor(6); /*設(shè)置文本顏色*/
settextstyle(0,0,2); /*設(shè)置數(shù)組顯示位置*/
sprintf(str1,"score %d level %d",score,level);/*顯示數(shù)組內(nèi)容*/
outtextxy(55,20,str1);
setcolor(YELLOW); /*設(shè)置字體顏色*/
settextstyle(0,0,2); /*設(shè)置字體類型*/
outtextxy(250,400,"EXIT=ESC ");/*顯示文本*/
}
void Close(void)
{
closegraph();
}
C語言實現(xiàn)《貪吃蛇》小游戲!代碼分享+思路注釋
貪吃蛇游戲,以簡單的規(guī)則帶來無盡的挑戰(zhàn),是眾多玩家喜愛的休閑益智游戲。在不同平臺上,無論是個人獨享的單機模式,還是團隊合作的團戰(zhàn)模式、賞金模式、挑戰(zhàn)模式,都為玩家?guī)砹素S富的游戲體驗。今天,我們將探索如何使用C語言編寫貪吃蛇游戲,通過代碼和注釋,深入了解游戲背后的邏輯與實現(xiàn)。在設(shè)計貪吃蛇游戲...
誰有一些簡單小游戲的C語言程序?
可以學(xué)寫“貪吃蛇”代碼:include <stdio.h> include <stdlib.h> include <conio.h> include include <Windows.h> define W 78 \/\/游戲框的寬,x軸 define H 26 \/\/游戲框的高,y軸 int dir=3; \/\/方向變量,初值3表示向“左”int Flag=0; \/\/吃了食物的標(biāo)志(1是0否)int score...
C語言貪吃蛇游戲代碼
實現(xiàn)貪吃蛇游戲,用戶通過鍵盤操控蛇體,遵循規(guī)則移動。游戲畫面直觀,蛇體碰觸自身或窗口邊緣判定失敗,吃到食物則增長。游戲框架設(shè)計利用全局變量與函數(shù),地圖構(gòu)建與蛇體動作實現(xiàn)依靠二維數(shù)組。時間控制通過靜態(tài)變量優(yōu)化。游戲結(jié)束與食物獲取,實現(xiàn)蛇體增長功能。代碼涉及二維數(shù)組、if-else、scanf、局部變量與...
保姆級配置git與使用+C語言編寫貪吃蛇
git push -u origin master C語言編寫貪吃蛇程序的步驟如下:使用vim編輯器編寫代碼:vim tanchishe.c 編輯完成后保存并退出:按下esc鍵,然后輸入:wq 編譯代碼:gcc tanchishe.c 運行代碼:.\/a.out 以上內(nèi)容由Zeee撰寫并發(fā)布于地平線開發(fā)者社區(qū),原始文檔和代碼鏈接請點擊此處一鍵直達。
C語言C++圖形庫---貪吃蛇大作戰(zhàn)【附源碼】
確保蛇吃到食物后能夠增長。游戲結(jié)束的條件包括蛇撞墻或吃到自己的身體。isGameOver函數(shù)負(fù)責(zé)判斷游戲是否結(jié)束,當(dāng)滿足這些條件時,我們會重置游戲狀態(tài),包括蛇的位置、長度和移動方向,并重新生成食物。完整的源代碼可以通過群【881577770】獲取,群內(nèi)有更多學(xué)習(xí)資源和交流機會,適合學(xué)習(xí)C語言的小伙伴加入。
C語言課程設(shè)計,貪吃蛇應(yīng)該怎么做?
C語言中數(shù)據(jù)結(jié)構(gòu)集中體現(xiàn)在數(shù)據(jù)類型上,因此在進行C語言程序設(shè)計時,應(yīng)統(tǒng)籌規(guī)劃程序中所使用的變量,數(shù)組,指針等,以及它們的類型等。這點是很重要的,如果在此期間選擇不合適的變量或者數(shù)組,將來修改就十分困難。現(xiàn)在分析一下貪吃蛇游戲中的元素,繼而得出與它們對應(yīng)的在程序中的描述:蛇:基本描述:長度,顏色,位置。對應(yīng)...
c語言小游戲代碼
C語言里還有 srand()函數(shù)等。\/\/頭文件:stdlib.h if(color == 14) color -= rand() % 13 + 1; \/\/變色 SetColor(color); gotoxy(ix*2, iy); printf("■"); } if(Snake[ix][iy] == Snake_Len) { gotoxy(ix*2, iy); SetColor(0xe); printf("≈"); } } } void Clear_Snake()\/\/...
如何用C語言寫貪吃蛇
include<conio.h> #include<graphics.h> #include #include<string.h> #include<malloc.h> #include<stdio.h> int grade=5,point=0,life=3; void set(),menu(),move_head(),move_body(),move(),init_insect(),left(),upon(),right(),down(),init_graph(),food_f(),ahead(),crate...
C語言做貪吃蛇用什么軟件編寫?
問題上已經(jīng)說了,是用C語言做的貪吃蛇,那么編寫它的軟件就是:C語言(一門通用計算機編程語言,廣泛應(yīng)用于底層開發(fā))。
c語言貪吃蛇源代碼怎么用?
C語言貪吃蛇源代碼必須經(jīng)過相應(yīng)的C\/C++編譯器編譯成EXE文件后才能運行。 由于我們通常使用的操作系統(tǒng)是Windows系統(tǒng),而在該系統(tǒng)下最長用的C\/C++編譯器是VC++編譯器,目前在大專院校常用的版本還是VC++6.0 下面就以VC++6.0來說明編譯過程: 1.在VC++6.0中通過“File”菜單下的 “Open”子菜單打開貪吃蛇代碼 2.在VC++...
相關(guān)評說:
虎林市相同: ______ C語言編譯器一般有Windows平臺的vc/vs編譯器,它的可執(zhí)行文件名為cl.exe ,Linux平臺上的gcc編譯器,它的可執(zhí)行文件為cc,事實上使用哪種C語言編譯器都可以進行編寫貪吃食游戲.附件中是vc6.0中編譯通過的一個貪吃食示例. 因為代碼比較多,沒法直接帖上來,執(zhí)行效果如下圖所示:
虎林市相同: ______ 當(dāng)然可以邊游戲了,漢字可以用點陣顯示,如果是windows c 的話顯示漢字就更簡單了!游戲窗體可以用windows c 編程實現(xiàn)! 給你一個貪吃蛇的游戲吧,在tc 下編譯成功!可以q聊:969370950 #include #include #include #include ...
虎林市相同: ______ /* 貪吃蛇程序 by champking */#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b int i,key; int score = 0;/*得分*/ int ...
虎林市相同: ______ 在內(nèi)存中定義一個數(shù)組,存儲當(dāng)前局面(如果棋盤小(<15)可以選用unsigned char類型,否則用int,蛇身就用1,2,3,4,5這樣的數(shù)字序列表示,每走一格,根據(jù)當(dāng)前方向?qū)⑾乱桓駭?shù)字變一下,把尾巴也處理一下,),每一秒刷新一下(向前走一格),每刷新一下,就重繪一遍當(dāng)前局面(可以用prinrf函數(shù),也可以用繪圖函數(shù)), 總之方法很多很多,自己下來可以思索一下
虎林市相同: ______ 貪吃蛇 #define N 200 #include <graphics.h> #include <stdlib.h> #include <dos.h> #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b int i,key; int score=0;/*得分*/ int gamespeed=...
虎林市相同: ______ C語言貪吃蛇源代碼必須經(jīng)過相應(yīng)的C/C++編譯器編譯成EXE文件后才能運行.由于我們通常使用的操作系統(tǒng)是Windows系統(tǒng),而在該系統(tǒng)下最長用的C/C++編譯器是VC++編譯器,目前在大專院校常用的版本還是VC++6.0 下面就以VC++6.0來說明編譯過程:1.在VC++6.0中通過“File”菜單下的 “Open”子菜單打開貪吃蛇代碼
虎林市相同: ______ 設(shè)個while ,每次循環(huán)蛇頭節(jié)點向前走(要保存方向).然后后部節(jié)點逐一向前移動.如果長得都一樣,可以直接把尾部節(jié)點移動到頭部移動方向的一個節(jié)點 然后sleep一段時間就好了
虎林市相同: ______ 用c++實現(xiàn)的"貪吃蛇"游戲源碼 // greedsnake.cpp #include #include #include #include #include #include #include "conf.h" typedef struct node { int x,y; struct node *next; }Node; typedef struct { Node *head,*tail; int length; }Snake; typedef struct ...
虎林市相同: ______ 蛇身應(yīng)該是數(shù)組或鏈表吧,取它們的倒序,前進方向相反就行了
虎林市相同: ______ 以下是代碼/* 貪吃蛇程序 by champking */#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b int i,key; int score = 0;...