用佇列寫貪吃蛇(C語言版)

2021-07-10 06:14:35 字數 3325 閱讀 8821

by tomas 2016.3.2

程式語言: c

程式介紹: 利用佇列這個資料結構編寫乙個簡單的貪吃蛇小遊戲。

原理分析: 佇列的特點就是先進先出(fifo),我們就是利用他的這個特點來模擬一條貪吃蛇。我們首先考慮一下這個遊戲需要哪些元素,然後怎麼用終端模擬這些元素。

蛇:蛇在終端上的表示就是很多個字元連在一起就是蛇,比如: @@@@ 或者 2222222 都是一條蛇。然而,佇列是有隊頭和隊尾之分,那麼用它表示的蛇也必須有蛇頭和蛇尾。這個點很重要,就是需要用隊尾表示蛇頭,因為佇列是先進先出的資料結構,蛇在移動的時候,他的尾巴要消失,然後需要在移動的方向上加上一段蛇,這樣就能使蛇移動。在資料結構上來說就是佇列的乙個元素先出佇列,然後再將乙個元素人隊。如圖:

蛇的移動:

蛇二: 蛇一向下移動

尾巴消失

然後在下方新增一段蛇,這樣蛇就向下移動了

蛇吃到食物:

看了蛇的移動,那麼蛇吃到食物比移動更容易,直接將一段蛇新增到原來的蛇上面就好了,在資料結構上就是表現為乙個元素進入佇列的操作。如圖:

蛇向下走一步就可以吃到食物了。

蛇吃到食物,變成三個節點。

以上是蛇正常遊戲,那麼接下來就是遊戲結束的條件。

撞到邊框: 邊框就用座標表示,然後在對應的座標上輸出字元。

撞到自己: 每走一步,就判斷頭的座標是否與原來蛇的節點座標重複,若重複則遊戲結束。

#include

#include

#include

#include

#include

#include//引用標頭檔案

enum diriction;

struct snake;

struct serpent;

struct food; //定義食物的座標

//全域性變數,在全體函式都可以用的到的變數,在這只宣告一次就可以了

struct snake *head,*tail; //定義蛇頭和蛇尾的指標,就相當於佇列的頭和尾,head是隊頭,tail是隊尾

struct food *food; //定義食物

struct serpent *serpent; //定義蛇的方向和長度

int getit=0; //判斷是否得分,若是則可投放食物

//宣告以下可用到的函式

void gotoxy(); //定位游標

void initsnake(); //初始化蛇

void home(); //繪製邊框

void initfood(); //投放食物

void keyhit(); //鍵盤控制

void move(); //蛇身的移動

void addtail(int x, int y); //增加隊尾長度

void clearhead(); //清除上次的隊頭

void print(); //列印畫面

int main()

; return0;}

void gotoxy(int x, int y) //定位游標,網上搜的

void initsnake()

void home()

void initfood() //投放食物

q=q->next;

}if(m==0)

initfood(); //食物無效,隱含rice==0,又呼叫一次

}void keyhit()

case

's':

case

'a':

case

'd':}}

}void move()

if(tail->x==food->a &&tail->y==food->b) //吃到食物

if(getit!=1) //如果沒吃到食物清除隊尾

clearhead();

p=tail;

q=head;

while(q!=tail) //判斷是否撞到自己

if(tail->x>30 || tail->y>17||tail->x<=1 ||tail->y<=1) //超邊框退出

exit(0);

}void addtail(int x,int y) //壓入隊

void clearhead() //這是清除隊尾

void print() //列印畫面

if(getit==1) //判斷食物是否被吃

initfood();

gotoxy(30,20);

printf("score :%d", serpent->lenght-4); //分數

}

打造C語言版貪吃蛇(上)

學了程式設計後難免會有些手癢,於是飢渴難耐的我瞄上了小學的經典記憶 貪吃蛇。下面我就遊戲的設計來逐步講解我打造c語言版貪吃蛇的過程。這是乙個系列的文章,共三篇,第一篇講遊戲的主體設計,第二篇就設計的細節及具體實現給出講解,第三篇給出簡易遊戲ai的設計。遊戲中用到了windows的庫,只保證能在win...

貪吃蛇原始碼(C語言版)

貪吃蛇其實就是實現以下幾步 1 蛇的運動 通過 畫頭擦尾 來達到蛇移動的視覺效果 2 生成食物 3 蛇吃食物 實現 畫頭不擦尾 4 遊戲結束判斷 也就是蛇除了食物,其餘東西都不能碰 include include include include include define width 60 def...

用c語言寫的貪吃蛇

用c編寫的貪吃蛇程式 需求分析 貪吃蛇是一款經典的小遊戲,在遊戲中,玩家操作一條小蛇不斷的吃豆,同時要避免蛇頭與身體部分接觸。蛇每吃乙個豆,身體就會長大一節。源程式 include include system cls 用到 include include include sleep函式 inclu...