二;源**
三;執行結果
蛇 食物 地圖
void
init()
snake.num =3;
snake.direction = right;
food()
;}
蛇 我們要用到資料 資料首先得存
變數 陣列 結構體
蛇 一節一節的軀幹 用圖形畫出來
每一節軀幹都是一樣的 長得一毛一樣
有什麼不一樣? 位置不一樣 陣列存什麼?
int a[100]=; //位置是x,y
結構體食物自己長在地上 隨機的 隨機數
a[1]=a[0] 001 蛇的每一節被後一節代替
void
draw()
//畫食物
fillrectangle
(foodxy.x, foodxy.y, foodxy.x +
10, foodxy.y +10)
;}
蛇的移動 通過什麼?鍵盤
繪蛇和食物graphics.h
迴圈以上
void
move()
switch
(dir = snake.direction)
}
判斷遊戲的結束 蛇自食 蛇撞牆
我們沒按鍵的時候 蛇動不動?
_getch()阻塞式 _kbhit()非阻塞 有按鍵它的返回值就非0 鍵盤監聽
無按鍵它的返回值就是0
while(_kbhit()) 當鍵盤沒有按的時候
void
over()
for(
int i =
1; i < snake.num; i++)if
(snake.xy[0]
.x == snake.xy[i]
.x&&snake.xy[0]
.y == snake.xy[i]
.y)}
我們要通過按鍵改變蛇的方向
#include
#include
//按鍵
#include
//畫蛇專用
#include
//隨機種子 隨機數
#include
#include
#pragma comment(lib,"winmm.lib")
#define max 100
typedef
struct
place;
//位置
struct mysnake//蛇
snake;
place foodxy;
//食物位置
enum direction
;//函式宣告 函式原型
char dir;
//上一次方向
void
init()
;//初始化
void
food()
;//生成食物
void
keydown()
;//蛇頭動向
void
move()
;//移動蛇
void
draw()
;//繪蛇和食物
void
eat();
//蛇恰飯
void
over()
;//遊戲結束判斷
void
run();
//執行
intmain()
void
init()
snake.num =3;
snake.direction = right;
food()
;}void
keydown()
}void
move()
switch
(dir = snake.direction)
}void
draw()
//畫食物
fillrectangle
(foodxy.x, foodxy.y, foodxy.x +
10, foodxy.y +10)
;}void
food()
}void
eat()}
void
over()
for(
int i =
1; i < snake.num; i++)if
(snake.xy[0]
.x == snake.xy[i]
.x&&snake.xy[0]
.y == snake.xy[i]
.y)}
void
run(
)//當蛇往右走的時候 按了wa
簡單的貪吃蛇遊戲實現
貪吃蛇功能實現 1 定義貪吃蛇遊戲棋盤圖 2 初始化棋盤 3 輸出棋盤所在資訊 3 選擇遊戲難度 4 隨機產生食物 5 更新遊戲動態 6 設定遊戲相應的操作 7 列印遊戲結果 實現 include include include include include include include usi...
字元遊戲貪吃蛇的嘗試
老師要我們做乙個字元版的貪吃蛇遊戲 於是我就做了乙個很簡陋的貪吃蛇。這個貪吃蛇非常簡陋,連動起來都要乙個鍵乙個回車才能完成。雖然非常的簡陋,但是 我了解字元遊戲 學會了自頂向下的設計方法 偽 如何寫演算法 以及函式抽象過程寫遊戲。一開始寫的時候 有很多困難 需要想很多步驟,後來我細化問題,將問題分解...
VC版的貪吃蛇遊戲
學c 的時候,課程設計編寫了c 版的貪吃蛇遊戲,當時,將很多的東西都分裝在了snake類中,所以,將其移植到vc中,只需將snake類稍作修改,然後新增到vc中即可。此處,我感受到復用性的好處,將與顯示或平台無關的東西分裝在一起,如果能進一步抽象的盡量抽象,就可以充分發揮其復用性。具體的關於snak...