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