當前位置:編程學習大全網 - 源碼下載 - WRText源代碼

WRText源代碼

/*貪吃蛇遊戲代碼*/

# include & ltgraphics.h & gt

# include & ltstdlib.h & gt

# include & lttime.h & gt

# include & ltdos.h & gt

#定義最大關節數200

#定義左0x4b00

#定義右0x4d00

#向下定義0x5000

#定義高達0x4800

#定義ESC 0x011b

#定義MV_RIGHT 1

#定義MV_LEFT 2

#定義MV_UP 3

#定義MV_DOWN 4

void init graph(void);/*圖形驅動初始化函數*/

void DrawFence(無效);/*繪制遊戲場景*/

void GameOver(int分數);/*結束遊戲*/

void玩法(void);/*玩遊戲的具體流程*/

void pr score(int score);/*輸出結果*/

食物的結構/*食物的結構定義*/

{

int x;/*食物橫坐標*/

int y;/*食物的縱坐標*/

int addFood/*判斷食物的變量是否會出現*/

};

結構蛇/*蛇的結構定義*/

{

int x[MAX _ JOINTS];/*保存屏幕上蛇的第壹部分的列坐標*/

int y[MAX _ JOINTS];/*保存屏幕上蛇的第壹段的線坐標*/

內部接頭;/*蛇的結數*/

int方向;/*蛇的移動方向*/

int life/*蛇的命,0是活的,1是死的*/

};

/*主函數*/

主()

{

int graph();/*圖形驅動程序*/

draw fence();/*遊戲場景*/

遊戲性();/*玩遊戲的具體流程*/

closegraph();/*圖表結束*/

}

/*圖形驅動初始化函數*/

void InitGraph(void)

{

int gd = DETECT,GM;

init graph(& amp;gd,& ampgm,“”;

cleardevice();

setbkcolor(藍色);

cleardevice();

setcolor(白色);

settextstyle(DEFAULT_FONT,HORIZ_DIR,3);

outtextxy(170,150,“貪吃蛇”);

outtextxy(219,254,“就緒”);

setcolor(藍色);

clear device();

}

/*遊戲開始畫面,左上角坐標為(50,40),右下角坐標為(610,460 */

無效繪制柵欄(無效)

{

int I;

setbkcolor(淺綠色);

set color(11);

setlinrstyle(SOLID_LINE,0,THICK _ WIDTH);

/*畫壹個柵欄*/

for(I = 50;我& lt=600;i+=10)

{

矩形(I,40,i+10,49);/*高於*/

矩形(I,451,i+10,460);/*低於*/

}

for(I = 40;我& lt=450;i+=10)

{

矩形(50,I,59,I+10);/*左*/

矩形(601,I,610,I+10);/*右*/

}

}

/*控制貪吃的蛇吃食物*/

無效遊戲(void)

{

int i,key

int gamespeed = 22000/*控制遊戲速度*/

int得分= 0;/*記錄遊戲分數*/

結構食品;/*食物結構變量*/

struct Snake蛇;/* snake結構變量*/

food . add food = 1;/*1表示新的食物需要出現,0表示食物已經存在*/

snake . life = 0;/*將蛇的生命狀態設置為活著*/

snake.direction = MV _右;/*將蛇頭設置在右邊*/

snake . x[0]= 100;snake . y[0]= 100;/*蛇頭的初始位置*/

snake . x[1]= 110;snake . y[1]= 100;

snake . joint = 2;/*蛇的初始數量是2*/

Prscore(分數);

/*重復玩遊戲,直到按下Esc鍵*/

srand(time(NULL));

while(1)

{

而(!kbhit())

{ if(food.addfood==1)

{

food . x = rand()% 400+60;

food . y = rand()% 350+60;

/*食物出現後,必須在整個格子裏,蛇才能吃*/

而(food.x%10!=0)

{

food . x++;

}

而(food.y%10!=0)

{

food . y++;

}

food . add food = = 0;/*屏幕上有食物*/

}

If(food.addFood==0) /*如果屏幕上有食物,*/

{

setcolor(綠色);

矩形(food.x,food.y,food.x+10,food . x-10);

}

for(I = snake . joint-1;我& gt0;I-)/*蛇的每壹段向前移動*/

{

snake . x[I]= snake . x[I-1];

snake . y[I]= snake . y[I-1];

}

/*1,2,3,4表示左,右,上,下來決定蛇頭的移動*/

開關(蛇形方向)

{

case MV _ RIGHT:snake . x[0]+= 10;打破;

case MV _ LEFT:snake . x[0]-= 10;打破;

case MV _ UP:snake . y[0]-= 10;打破;

case MV _ DOWN:snake . y[0]+= 10;打破;

}

/*從蛇的第四節判斷自己是不是打中了自己,因為蛇頭有兩節,第三節是不可能轉身的*/

for(I = 3;我& ltsnake.jointi++)

{

if(snake . x[I]= = snake . x[0]& amp;& ampsnake.y[i]==snake.y[0])

{

GameOver(得分);/*顯示失敗*/

snake . life = 1;/*蛇死*/

打破;

}

}

/*判斷蛇是否撞墻*/

if(snake . x[0]& lt;55 | | snake . x[0]& gt;595 | | snake . y[0]& lt;55 | | snake . y[0]& gt;455)

{

GameOver(得分);/*這個遊戲結束了*/

snake . life = 1;/*蛇死*/

打破;

}

/*以上兩個判斷後,如果蛇死了,跳出內循環重新開始*/

if(snake . life = = 1)break;

if(snake . x[0]= = food . x & amp;& ampSnake.y[0]==food.y) /*吃完飯*/

{

/*清除圖片中的食物*/

set color(o);

矩形(food.x,food.y,food.x+10,food . y-10);

/*先把新段放到看不見的地方,在下壹個循環中取前壹段的位置*/

snake . joint++;/*蛇的身體有很長的壹段*/

food . add food = 1;/*新食物出現在屏幕上*/

得分+= 10;

Prscore(分數);/*輸出新分數*/

}

/*畫壹條蛇*/

set color(4);

for(I = 0;我& ltsnake.jointi++)

矩形(snake.x[i],snake.y[i],

snake.x[i]+10,snake . y[I]-10);

}

延遲(gamespeed);/*控制蛇的速度的延遲*/

/*去掉蛇的最後壹部分*/

set color(0);

矩形(snake.x[snake.joint-1],snake.y[joint-1],

snake . x[snake . joint-1]+10,snake . y[snake . joint-1]+10);

}/* while結束(!kbhit)*/

if(snake . life = = 1)break;/*如果蛇死了,跳出循環*/

key = BIOS key();/*按接收鍵*/

/*判斷按鍵是否反方向移動,按Esc退出*/

if(key = = Esc)break;

else if(key = = UP & amp;& amp蛇。方向!=4)

snake.direction = MV _ UP

else if(key = = RIGHT & amp;& amp蛇,方向!=MV_LEFT)

snake.direction = MV _右;

else if(key = = LEFT & amp;& amp蛇,方向!=MV_RIGHT)

snake.direction = MV _ LEFT

else if(key = = DOWN & amp;& amp蛇,方向!=MV_UP)

snake.direction = = MV _ DOWN

}/* while結束(1)*/

}/*結束遊戲*/

無效遊戲結束(智力分數)

{

cleardevice();

Prscore(分數);

setcolor(紅色);

settextxy(0,0,4);

outtextxy(200,200,“game over”);

獲取()

}

/*輸出結果*/

無效Prscore(int分數)

{

char str[10];

setfillstyle(solid _ FILL,YELLON);

吧(50,15,220,35);

set color(6);

settextstyle(0,0,2);

sprintf(str," score:%d ",score);

outtextxy(55,20,str);

}

  • 上一篇:後臺管理系統UI風格規則--Ant Design “設計” 中的壹些實用點
  • 下一篇:同花順炒股軟件,日線圖上白,藍,黃豎道是什麽意思?
  • copyright 2024編程學習大全網