求一個(gè)貪吃蛇C語(yǔ)言源代碼 C語(yǔ)言的貪吃蛇源代碼
值得注意的是,要將EGAVGA.BGI文件拷到和這個(gè)源程序同一個(gè)目錄下才能正常顯示。
EGAVGA.BGI在C語(yǔ)言軟件的安裝目錄下,你可以在該文件夾搜索找到!
#include "stdio.h"
#include "graphics.h"
#include "stdlib.h"
#include "dos.h"
#define N 200
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,key;
int score=0;
int gamespeed=50000;
struct Food
{
int x;
int y;
int yes;
}food;
struct Snake
{
int x[N];
int y[N];
int node;
int direction;
int life;
}snake;
void Init();
void DrawK();
void GamePlay();
void GameOver();
void PrScore();
void Close();
void main()
{
Init();/*圖形界面驅(qū)動(dòng)*/
DrawK();/*作圍墻*/
GamePlay();
Close();
}
/*圖形界面驅(qū)動(dòng)模塊*/
void Init()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
}
/*作矩形圍墻*/
void DrawK()
{
setcolor(11);
setlinestyle(0,0,3);
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10);
rectangle(601,i,610,i+10);
}
getch();
}
void GamePlay()
{
randomize();
/*初始狀態(tài)*/
food.yes=1;
snake.life=0;
snake.direction=1;
snake.x[0]=100;
snake.y[0]=100;
snake.x[1]=110;
snake.y[1]=100;
snake.node=2;
PrScore();
/*重復(fù)玩游戲模塊*/
while(1)
{
/*沒有按鍵情況下蛇的運(yùn)動(dòng)*/
while(!kbhit())
{
/*食物的出現(xiàn)*/
if(food.yes==1)
{
food.x=rand()%400+60;
food.y=rand()%350+60;
/*將食物出現(xiàn)位置控制在整格*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*食物位置控制好了就改變狀態(tài)*/
}
/*顯示食物*/
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--)
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*按方向鍵時(shí)蛇的位置變化*/
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;
}
/*蛇自己與自己相撞時(shí)生命結(jié)束*/
for(i=3;i<snake.node;i++)
{
if(snake.x[i]==snake.x[0]&&snake.y[0]==snake.y[i])
{
GameOver();
snake.life=1;
break;
}
}
/*蛇撞墻時(shí)死亡*/
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
GameOver();
snake.life=1;
}
/*蛇的生命狀態(tài)判斷*/
if(snake.life==1)
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);
snake.x[snake.node]=-20;
snake.y[snake.node]=-20;
snake.node++;
food.yes=1;
score+=10;
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);
/*去除最后一節(jié)*/
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);
}/*end while(!kbhit())*/
if(snake.life==1)
break;
key=bioskey(0);
if(key==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()
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*打印分?jǐn)?shù)*/
void PrScore()
{
char str[10];
setfillstyle(1,14);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結(jié)束*/
void Close()
{
getch();
closegraph();
}
http://tieba.baidu.com/p/1492917320
發(fā)過(guò)去了。VB運(yùn)行。
C語(yǔ)言C++圖形庫(kù)---貪吃蛇大作戰(zhàn)【附源碼】
確保蛇吃到食物后能夠增長(zhǎng)。游戲結(jié)束的條件包括蛇撞墻或吃到自己的身體。isGameOver函數(shù)負(fù)責(zé)判斷游戲是否結(jié)束,當(dāng)滿足這些條件時(shí),我們會(huì)重置游戲狀態(tài),包括蛇的位置、長(zhǎng)度和移動(dòng)方向,并重新生成食物。完整的源代碼可以通過(guò)群【881577770】獲取,群內(nèi)有更多學(xué)習(xí)資源和交流機(jī)會(huì),適合學(xué)習(xí)C語(yǔ)言的小伙伴加入。
C語(yǔ)言C++圖形庫(kù)---貪吃蛇大作戰(zhàn)【附源碼】
設(shè)計(jì)一款經(jīng)典小游戲——貪吃蛇,從創(chuàng)建窗體、定位網(wǎng)格、繪制蛇節(jié)點(diǎn)、移動(dòng)蛇節(jié)點(diǎn)、控制移動(dòng)方向、創(chuàng)建食物到最后實(shí)現(xiàn)吃掉食物并長(zhǎng)大、結(jié)束游戲的邏輯,每一步都需精心規(guī)劃。首先,創(chuàng)建一個(gè)800 * 600的窗體,使用默認(rèn)坐標(biāo)系,設(shè)置背景色并清空窗體。接著,將窗體水平分隔為20等分,垂直分隔為15等分,構(gòu)建網(wǎng)格...
C語(yǔ)言寫貪吃蛇
C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲源代碼中,首先定義了一系列的宏定義和變量,用于控制游戲的基本參數(shù)和狀態(tài),包括游戲速度、得分、蛇的移動(dòng)方向和節(jié)點(diǎn)數(shù)等。游戲的主函數(shù)從初始化圖形系統(tǒng)開始,依次進(jìn)行游戲等級(jí)選擇和游戲區(qū)域的繪制。游戲等級(jí)的選擇界面包含了游戲制作人的信息,如姓名、學(xué)號(hào)和班級(jí)等。用戶需要輸入自己...
能不能介紹點(diǎn)C語(yǔ)言編程的小游戲,例如貪吃蛇,。。好玩點(diǎn)的。要有代碼...
能不能介紹點(diǎn)C語(yǔ)言編程的小游戲,例如貪吃蛇,。。好玩點(diǎn)的。要有代碼,謝謝了 我來(lái)答 ...int b[4]; \/\/標(biāo)記4個(gè)"口"方塊:1有,0無(wú),類似開關(guān) int x,y, level,score,speed; \/\/方塊中心
C語(yǔ)言實(shí)現(xiàn)《貪吃蛇》小游戲!代碼分享+思路注釋
貪吃蛇游戲,以簡(jiǎn)單的規(guī)則帶來(lái)無(wú)盡的挑戰(zhàn),是眾多玩家喜愛的休閑益智游戲。在不同平臺(tái)上,無(wú)論是個(gè)人獨(dú)享的單機(jī)模式,還是團(tuán)隊(duì)合作的團(tuán)戰(zhàn)模式、賞金模式、挑戰(zhàn)模式,都為玩家?guī)?lái)了豐富的游戲體驗(yàn)。今天,我們將探索如何使用C語(yǔ)言編寫貪吃蛇游戲,通過(guò)代碼和注釋,深入了解游戲背后的邏輯與實(shí)現(xiàn)。在設(shè)計(jì)貪吃蛇游戲...
保姆級(jí)配置git與使用+C語(yǔ)言編寫貪吃蛇
git push -u origin master C語(yǔ)言編寫貪吃蛇程序的步驟如下:使用vim編輯器編寫代碼:vim tanchishe.c 編輯完成后保存并退出:按下esc鍵,然后輸入:wq 編譯代碼:gcc tanchishe.c 運(yùn)行代碼:.\/a.out 以上內(nèi)容由Zeee撰寫并發(fā)布于地平線開發(fā)者社區(qū),原始文檔和代碼鏈接請(qǐng)點(diǎn)擊此處一鍵直達(dá)。
C語(yǔ)言貪吃蛇游戲代碼
實(shí)現(xiàn)貪吃蛇游戲,用戶通過(guò)鍵盤操控蛇體,遵循規(guī)則移動(dòng)。游戲畫面直觀,蛇體碰觸自身或窗口邊緣判定失敗,吃到食物則增長(zhǎng)。游戲框架設(shè)計(jì)利用全局變量與函數(shù),地圖構(gòu)建與蛇體動(dòng)作實(shí)現(xiàn)依靠二維數(shù)組。時(shí)間控制通過(guò)靜態(tài)變量?jī)?yōu)化。游戲結(jié)束與食物獲取,實(shí)現(xiàn)蛇體增長(zhǎng)功能。代碼涉及二維數(shù)組、if-else、scanf、局部變量與...
求用c語(yǔ)言編寫的貪吃蛇程序
貪吃蛇游戲的C語(yǔ)言程序通過(guò)宏定義鍵名來(lái)控制蛇的移動(dòng)方向,如LEFT、RIGHT、DOWN、UP和ESC。程序中定義了游戲等級(jí)、得分、游戲速度等變量,以及食物和蛇的結(jié)構(gòu)體。游戲等級(jí)的選擇由玩家輸入,游戲速度會(huì)根據(jù)等級(jí)調(diào)整。選擇等級(jí)后,游戲區(qū)域被初始化并繪制。游戲過(guò)程中,蛇會(huì)隨機(jī)生成食物,并根據(jù)玩家輸入的方向...
用c語(yǔ)言編寫貪吃蛇
回答:詳情請(qǐng)查看視頻回答
求一個(gè)完整的貪吃蛇C語(yǔ)言代碼,能在VC上運(yùn)行的,自己做的不要復(fù)制,如果能...
你好@ 這是不含,<graphics.h> 完成的貪吃蛇游戲,下面是結(jié)果
相關(guān)評(píng)說(shuō):
突泉縣雙萬(wàn): ______ if snake[head].pos_x == snake[tail].pos_x && snake[head].pos_y == snake[tail].pos_y 代表頭尾相碰了 那么修改這個(gè)body中的實(shí)現(xiàn)代碼 原來(lái)肯定是顯示游戲結(jié)束 清除上下文 掛了一類的,現(xiàn)在改成你想要的
突泉縣雙萬(wàn): ______ 這個(gè)不錯(cuò) TC 貪吃蛇代碼2008-06-08 13:50#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...
突泉縣雙萬(wàn): ______ 以下是代碼/* 貪吃蛇程序 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;...
突泉縣雙萬(wàn): ______ /* 貪吃蛇程序 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 ...
突泉縣雙萬(wàn): ______ http://www.newasp.net/code/dl003422 http://data.csai.cn/View_48521.html ----C語(yǔ)言 http://www.programfan.com/club/showpost.asp?id=26753&t=o
突泉縣雙萬(wàn): ______ #define N 200 #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define U...
突泉縣雙萬(wàn): ______ 是數(shù)的一種寫法.前綴 0x 表示后面的是十六進(jìn)制的數(shù).比如 0x10 表示 十進(jìn)制的數(shù)字 16.具體的可以找點(diǎn) 十六進(jìn)制 的資料看看.
突泉縣雙萬(wàn): ______ 樓上正解,蛇在移動(dòng)時(shí),其實(shí)蛇尾是用與背景色相同的蛇身覆蓋的
突泉縣雙萬(wàn): ______ C++ #include using namespace std; char num[16] = { '0', '1', '2', '3', '4', '5...
突泉縣雙萬(wàn): ______ #include int main(){ long long money = 1e11; long days = 0; while(money) { money /= 2; days++; } printf("10億需要%d天能花完\...