當前位置:編程學習大全網 - 編程語言 - Windows遊戲編程代碼

Windows遊戲編程代碼

# include & ltbits/stdc++。h & gt

# include & ltstdlib.h & gt

# include & ltdos.h & gt

#定義左0x4b00

#定義右0x4d00

#向下定義0x5000

#定義高達0x4800

#定義ESC 0x011b

int i,key

int得分= 0;

int gamespeed = 32000

食物結構/*食物的結構*/

{

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

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

int yes/*食物是否出現的變量*/

}食物;

Structsnake/*蛇的結構*/

{

int x[N];

int y[N];

int節點;/*蛇的結數*/

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

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

}蛇;

void Init(void);/*圖形驅動程序*/

void Close(無效);/*關閉遊戲功能*/

void DrawK(無效);/*繪圖功能*/

void game over(void);/*輸出故障功能*/

void玩法();/*遊戲控制功能主程序*/

void PrScore(void);/*小數輸出函數*/

DELAY(char ch)/*調整遊戲速度*/

{

if(ch=='3 ')

{

延遲(gamespeed);/*delay是延遲函數*/

}

else if(ch=='2 ')

{

延遲(gamespeed);

}

}

Menu()/*遊戲開始菜單*/

{

char ch

printf("請選擇遊戲速度:\ n ");

printf(" 1-快2-正常3-慢\ n ");

printf(" \ n請按數字..\ n ");

{ ch = getch();}

而(ch!= ' 1 ' & amp;& ampch!= ' 2 ' & amp& ampch!='3');

clr SCR();

返回(ch);

}

/*主函數*/

無效總管(無效)

{

int ch

ch = Menu();

init();

DrawK();

遊戲性(ch);

close();

}

void初始化(void)

{

int gd=DETECT,GM;

init graph(& amp;gd,& ampgm," c:\ \ TC ");

clear device();

}

void DrawK(無效)

{

set color(11);

setlinestyle(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);/*畫右邊的方框*/

}

}

無效遊戲(char ch)

{

randomize();/*隨機數生成器*/

food . yes = 1;/*1代表食物出現,0代表食物存在*/

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();

而(1) /*可以重復遊戲*/

{

而(!Khit ())/*蛇沒有按鈕自己走*/

{

If(food.yes==1) /*需要食物*/

{

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

food . y = rand()% 350+60;/*使用rand函數隨機生成食物坐標*/

而(food.x%10!=0)

food . x++;

而(food.y%10!=0)

food . y++;/*判斷食物是否出現在整個單元格*/

food . yes = 0;/*現在有吃的了*/

}

If(food.yes==0) /*顯示可用的食物*/

{

setcolor(綠色);

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

}

for(I = snake . node-1;我& gt0;I-)/* Snake的移動算法*/

{

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

snake . y[I]= snake . y[I-1];/* Snake的身體運動算法*/

}

Switch(snake.direction) /* Snake的頭部運動算法來控制運動*/

{

case 1:snake . x[0]+= 10;打破;

案例二:snake . x[0]-= 10;打破;

案例三:snake . y[0]-= 10;打破;

案例四:snake . y[0]+= 10;打破;

}

for(I = 3;我& ltsnake .節點;I++) /*判斷頭部是否與身體碰撞*/

{

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

{

game over();

snake . life = 1;

打破;

}

}

/*下面是如何判斷自己是否碰壁*/

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

{

game over();

snake . life = 1;

}

If(snake.life==1) /*死了就退出循環*/

打破;

if(snake . x[0]= = food . x & amp;& ampSnake.y[0]==food.y) /*判斷蛇是否吃過食物*/

{

set color(0);

矩形(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;

得分+= 10;

PrScore();

}

set color(4);/*每次運動後擦拭身體背部*/

for(I = 0;我& ltsnake .節點;i++)

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

延遲(gamespeed);

延遲(ch);

set color(0);

矩形(snake.x[snake.node-1],snake.y[snake.node-1],snake . x[snake . node-1]+10,snake . y[snake . node-1]-10);

}

if(snake.life==1)

打破;

key = BIOS key(0);/*接受按鈕*/

if(key==ESC)

打破;

其他

if(key = = UP & amp;& amp蛇,方向!=4)/*判斷是否改變方向*/

snake . direction = 3;

其他

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

snake . direction = 1;

其他

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

snake . direction = 2;

其他

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

snake . direction = 4;

}

}

無效遊戲結束(無效)

{

clear device();

setcolor(紅色);

settextstyle(0,0,4);

outtextxy(200,200,“遊戲結束”);

getch();

}

無效PrScore(無效)

{

char str[10];

setfillstyle(SOLID_FILL,黃色);

吧(50,15,220,35);

set color(6);

settextstyle(0,0,2);

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

outtextxy(55,20,str);

}

無效關閉(無效)

{

getch();

closegraph();

}

  • 上一篇:長安悅翔v7提速怎麽樣?
  • 下一篇:冷水江市高級技工學校專業有哪些?專業介紹
  • copyright 2024編程學習大全網