c語言貪吃蛇程式

2021-05-11 14:41:59 字數 3289 閱讀 6908

1樓:哇哎西西

基本思路:

#include

#include

#include

#define beg_x 2

#define beg_y 1

#define wid 20

#define hei 20

handle hout;

typedef enum dir;

typedef struct snake_body

coord pos;//蛇身的位置

struct snake_body *next;//下一個蛇身

struct snake_body *prev;//前一個蛇身

}snake, *psnake;

psnake head = null;//蛇頭

psnake tail = null;//蛇尾

//畫遊戲邊框的函式

void drawborder()

int i, j;

coord pos = ;

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

setconsolecursorposition(hout, pos);

for(j = 0; j < wid; ++j)

if(i == 0)//第一行

if(j == 0)

printf("┏");

else if(j == wid - 1)

printf("┓");

else

printf("━");

else if(i == hei - 1)//最後一行

if(j == 0)

printf("┗");

else if(j == wid - 1)

printf("┛");

else

printf("━");

else if(j == 0 || j == wid - 1)//第一列或最後一列

printf("┃");

else

printf("  ");

++pos.y;

//新增蛇身的函式

void addbody(coord pos)

psnake pnew = (psnake)calloc(1, sizeof(snake));

pnew->pos = pos;

if(!head)

head = tail = pnew;

else

pnew->next = head;//新建立蛇身的next指向原先的蛇頭

head->prev = pnew;//原先的蛇頭的prev指向新建立的蛇身

head = pnew;//把新建立的蛇身作為新的蛇頭

setconsolecursorposition(hout, head->pos);

printf("◎");

//蛇身移動的函式

void movebody(dir dir)

psnake ptmp;

coord pos = head->pos;

switch(dir)

case up:

if(head->pos.y > beg_y + 1)

--pos.y;

else

return;

break;

case down:

if(head->pos.y < beg_y + hei - 2)

++pos.y;

else

return;

break;

case left:

if(head->pos.x > beg_x + 2)

pos.x -= 2;

else

return;

break;

case right:

if(head->pos.x < beg_x + (wid - 2) * 2)

pos.x += 2;

else

return;

break;

addbody(pos);//新增了一個新的蛇頭

ptmp = tail;//儲存當前的蛇尾

tail = tail->prev;

if(tail)

tail->next = null;

setconsolecursorposition(hout, ptmp->pos);

printf("  ");

free(ptmp);

int main()

int ctrl;

dir dir = right;//初始蛇的方向是向右的

coord pos = ;

system("color 0e");

system("mode con cols=90 lines=30");

hout = getstdhandle(std_output_handle);

printf("    ------------貪吃蛇的移動------------");

drawborder();

//自定義幾個蛇的身體

addbody(pos);

pos.x += 2;

addbody(pos);

pos.x += 2;

addbody(pos);

pos.x += 2;

addbody(pos);

pos.x += 2;

addbody(pos);

pos.x += 2;

addbody(pos);

pos.x += 2;

addbody(pos);

//控制蛇的移動

while(ctrl = getch())

switch(ctrl)

case 'w':

if(dir == down)

continue;

dir = up;

break;

case 's':

if(dir == up)

continue;

dir = down;

break;

case 'a':

if(dir == right)

continue;

dir = left;

break;

case 'd':

if(dir == left)

continue;

dir = right;

break;

case 'q':

return 0;

movebody(dir);

return 0;

瘋狂貪吃蛇怎麼玩瘋狂貪吃蛇高分技巧玩法攻略大全

敵進吾退,敵退吾追,出其不意攻其不備!第一計,打草驚蛇 注意目標快要靠近你時必須加速離開,或者極速轉彎。第二計,暗渡陳倉,漫無目的的遊走,隨時注意第一名的走向,找機會。第三計,捨身取義,搏一搏單車變摩托,技術 意識,以小搏大才是重點,全場保持第一要花很大的經歷,所以建議前期不要太在乎生死!技巧類 追...

求c語言課設貪吃蛇 有償,求一個c語言課設貪吃蛇 有償 !

我可以幫你解決,源 c語言課程設計 貪吃蛇 c語言簡易課程設計貪吃蛇 define n 200 include include include define left 0x4b00 define right 0x4d00 define down 0x5000 define up 0x4800 def...

在貪吃蛇大作戰裡都見哪些厲害的人?

朋友玩的 有圖有真相 我最長只玩過1萬多米 真佩服她的耐心 之前貪吃蛇大作戰特別火的時候,我是被我弟弟帶到這個遊戲裡面的,我看著我弟弟玩這個蛇大概有半個小時都沒有死,感覺整個螢幕都快被 他的蛇給霸屏了,超厲害的啊。他之後私立還是因為我們在醫院的時候,老爸的複查完成了,我們要走的時候才死掉的,我那時是...