日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言小游戏贪吃神,[原创]自己编的一个贪吃蛇小游戏

發(fā)布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言小游戏贪吃神,[原创]自己编的一个贪吃蛇小游戏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#include

#include

#include

#include /*調(diào)用randomize()函數(shù)*/

#include

#define SPACE 0X3920

#define ESC 0x011b

#define UP 0x4800

#define DOWN 0x5000

#define LEFT 0x4b00

#define RIGHT 0x4d00

typedef struct

{

int x;

int y;

}point;

DrawBody(int x, int y)

{

gotoxy(x, y);

printf("%c\b", 3);

}

DrawHead(int x, int y)

{

gotoxy(x, y);

printf("%c\b", 2);

}

DrawSpace(int x, int y)

{

gotoxy(x, y);

printf(" ");

}

void bring_food(point man[],int n,point *food) /*隨機產(chǎn)生食物*/

{

int x,y;

int i,k = 0;

randomize();

while (k == 0)

{k = 1;

x = rand() % 58;

y = rand() % 23;

if (x < 3 || y < 3) /*產(chǎn)生的食物不在框內(nèi)*/

{k = 0;

continue;

}

for (i = 0; i < n; ++i)

if ((x == man[i].x) && (y == man[i].y)) /*如果產(chǎn)生的食物坐標和蛇身的某個坐標相同,則不符合條件*/

{ k = 0;

break;

}

}

food->x = x;

food->y = y;

gotoxy(x,y); /*在x,y出產(chǎn)生食物*/

printf("*");

}

void DrawWall() /*畫邊框函數(shù)*/

{ int i,j;

for (j = 2, i = 2; i < 60; ++i)

{ gotoxy(i, j);

textcolor(GREEN);

putch(219);

gotoxy(i, j+22);

textcolor(GREEN);

putch(219);

}

for (j = 2, i = 2; i < 25; ++i)

{ gotoxy(j, i);

textcolor(GREEN);

putch(219);

gotoxy(j+57, i);

textcolor(GREEN);

putch(219);

}

}

void message(int score) /*該函數(shù)輸出信息*/

{

if (score == 10 || score == 20 || score == 35)

{

gotoxy(65,6);

printf("Score: %d",score);

gotoxy(20,10);

textattr(5);

cprintf(" You Win ");

gotoxy(20,12);

cprintf("Thank you baby!");

getch();

return ;

}

gotoxy(65,6);

printf("Score: %d",score);

gotoxy(65,7);

printf("Space: pause");

}

int main() /*該程序運行將用方向鍵控制蛇的移動*/

{

point man[60]; /*記錄蛇坐標*/

point food; /*記錄食物坐標*/

int key = DOWN,keyb,key1 = DOWN;

int i;

int n = 10;

int score = 0;

long j,time;

clrscr();

for (i = 0; i < 10; ++i)

man[i].x = 12 - i;

for (i = 0; i < 10; ++i)

man[i].y = 3;

DrawWall(); /*畫邊框*/

for (i = 9; i > 0; --i)

DrawBody(man[i].x, man[i].y); /*畫蛇身*/

DrawHead(man[i].x, man[i].y); /*畫蛇頭*/

message(score);

bring_food(man,10,&food); /*產(chǎn)生食物*/

while (key != ESC)

{

if (bioskey(1) != 0) /*如果有鍵按下就接收鍵盤值*/

keyb = bioskey(0);

if ((keyb == SPACE) || (keyb == ESC) || (keyb == UP) || (keyb == DOWN) || (keyb == LEFT) || (keyb == RIGHT))

key = keyb;

switch (key)

{

case UP:

if (key1 == DOWN)

key = key1;

break;

case DOWN:

if (key1 == UP)

key = key1;

break;

case LEFT:

if (key1 == RIGHT)

key = key1;

break;

case RIGHT:

if (key1 == LEFT)

key = key1;

break;

case SPACE:

sleep(3);

if (man[0].x == man[1].x) /*暫停前沿y方向移動*/

{if (man[0].y < man[1].y)

key = UP;

else

key = DOWN;

}

else{if (man[0].x < man[1].x)

key = LEFT;

else

key = RIGHT;

}

break;

defualt:

break;

}

switch (key)

{

case UP:

DrawSpace(man[n-1].x, man[n-1].y);

for (i = n-1; i > 0 ; --i)

{

man[i].x = man[i-1].x;

man[i].y = man[i-1].y;

}

--man[0].y;

for (i = n-1; i > 0; --i)

DrawBody(man[i].x, man[i].y);

DrawHead(man[i].x, man[i].y);

break;

case DOWN:

DrawSpace(man[n-1].x, man[n-1].y);

for (i = n-1; i > 0 ; --i)

{

man[i].x = man[i-1].x;

man[i].y = man[i-1].y;

}

++man[0].y;

for (i = n-1; i > 0; --i)

DrawBody(man[i].x, man[i].y);

DrawHead(man[i].x, man[i].y);

break;

case LEFT:

DrawSpace(man[n-1].x, man[n-1].y);

for (i = n-1; i > 0 ; --i)

{

man[i].x = man[i-1].x;

man[i].y = man[i-1].y;

}

--man[0].x;

for (i = n-1; i > 0; --i)

DrawBody(man[i].x, man[i].y);

DrawHead(man[i].x, man[i].y);

break;

case RIGHT:

DrawSpace(man[n-1].x, man[n-1].y);

for (i = n-1; i > 0 ; --i)

{

man[i].x = man[i-1].x;

man[i].y = man[i-1].y;

}

++man[0].x;

for (i = n-1; i > 0; --i)

DrawBody(man[i].x, man[i].y);

DrawHead(man[i].x, man[i].y);

break;

/* defualt:

break; */

}

if ((man[0].x < 3) || (man[0].x > 58) || (man[0].y < 3) || (man[0].y > 23)) /*碰到邊框*/

break;

for (i = 2; i < n; ++i)

if (man[0].x == man[i].x && man[0].y == man[i].y) /*碰到自己身體*/

{key = ESC;

break;

}

if ((man[0].x == food.x) && (man[0].y == food.y)) /*吃到食物*/

{ score ++;

message(score);

n ++; /*蛇身長度加1*/

bring_food(man,n,&food); /*再產(chǎn)生一個食物*/

}

time = (score < 10) ? 500000 : ((score < 20) ? 400000 : ((score <30) ? 300000 : 200000));

for (j = 1; j < time ; ++j) /*該循環(huán)用來控制時間*/

if ((j != 0) && (j % 8 == 0))

j = j + 2 - 1*2;

else if ((j != 0) && (j % 9 != 1))

j = j + 1 - 1 * 1 * 1;

else j = j+1;

key1 = key; /*記錄下本次的有效按鍵*/

}

if (score != 10 && score != 20 && score != 35)

{ gotoxy(20,10);

textattr(2);

cprintf(" Game Over ");

gotoxy(20,12);

cprintf("Thank you baby!");

getch();

}

return 0;

}

總結

以上是生活随笔為你收集整理的c语言小游戏贪吃神,[原创]自己编的一个贪吃蛇小游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。