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...