「馬上就要結束了!」本章學習:
判斷是否吃到食物並增長身體
判斷是否撞牆或吃到自己
定義乙個變數 life 表示是否活著
life=1表示活著,life=0表示掛掉
記得在 init( ) 裡給 life 初始值1
主函式的while條件裡要加life
判斷撞牆
判斷蛇頭座標與牆是否重合
判斷吃到自己
依次判斷蛇頭座標是否與每節蛇身重合
記得要在move()函式的最後加上check_life( )
每移動一次都要判斷是否活著
參考**如下
// 判斷蛇是否還活著
void check_life()
}
直接判斷蛇頭座標與食物是否重合
若重合,則增長
增長分為水平和豎直增長
具體可參考**
參考**如下
// 判斷是否吃到食物
void check_food()
// 豎直增長,將上面的 x 變成 y 即可
if (snake[nail].y == snake[snake[nail].pre].y)
// 放置新的食物
printfood();
}}
/*
這裡是貪吃蛇源**
chapter 1:
解釋下標頭檔案:
time.h 生成隨機數要用到
windows.h 要用到裡面的函式 gotoxy
---------
1.畫圍牆
*************************==
chapter 2:
目標:繪製蛇,食物
蛇的儲存結構:簡單的鍊錶(陣列實現功能)
食物:隨機數的生成
*************************==
chapter 3:
目標: 實現蛇的運動
判斷鍵盤輸入
改變蛇的座標
重繪圖像
*************************==
chapter 4:
目標: 判斷是否吃到食物
增長身體
判斷是否撞牆,是否吃到自己
*************************==
*/#include
#include
#include
#include
#include
#include
// 定義乙個結構體用來儲存蛇的每節身體的座標
struct snake
snake[100];
// 定義三個變數存 蛇長,蛇頭,蛇尾
int lenth, head, nail;
// 食物位置
int food_x, food_y;
// 儲存蛇的當前,和上一次的移動方向
int direation, direation_pre;
// 儲存蛇是否還活著,1活著
int life;
// 游標移動函式
void gotoxy(int x, int y)
; setconsolecursorposition(getstdhandle(std_output_handle), coord);
}// 列印蛇
void printsnake()
}// 清除蛇
void clear()
}// 遊戲結束
void game_over()
// 判斷食物是否合法
int ok_food()
// 都沒有,則返回1
return1;}
// 列印食物
void printfood()
while (!ok_food());
// ok_food()為判斷食物是否合法的函式,合法返回1,不合法返回0
gotoxy(food_x, food_y);
printf("@");
}// 判斷是否吃到食物
void check_food()
// 豎直增長,將上面的 x 變成 y 即可
if (snake[nail].y == snake[snake[nail].pre].y)
// 放置新的食物
printfood();
}}// 判斷蛇是否還活著
void check_life()
}// 實現蛇的座標改變
void move()
case
's':
case
'a':
case
'd':
}printsnake();
check_food();
check_life();
}// 繪製圍牆
void printwall()
// 繪製豎直圍牆
for (int i = 1; i <= 20; i++)
}void init()
int main()
// 有讀入則停下來改變方向
// 先記下原來的方向
direation_pre = direation;
// 讀入要改變的方向
direation = getch();
// 判斷方向是否合法,如果和上次相反,則保持原來方向
if (direation == 'w' && direation_pre == 's' || direation == 's' && direation_pre == 'w')
direation = direation_pre;
if (direation == 'a' && direation_pre == 'd' || direation == 'd' && direation_pre == 'a')
direation = direation_pre;
}system("pause");
return
0;}
C語言版貪吃蛇 第二部分
本章將學習以下內容 根據座標列印出蛇 利用隨機數生成食物 列印食物 蛇的列印 食物本章完整 運動的原理 類似動畫的原理,蛇每移動一次,重新繪製一次影象,通過不斷的重繪,形成連續的動作。如何運動 方法二 比較兩種方法,可以發現方法二更為簡便。基於方法二的特點,陣列不能滿足我們的需求 所以這裡就需要介紹...
第四部分 方法3
對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...
第四部分 方法5
linux繼承了unix作業系統結構清晰的特點。在linux下的檔案結構非常有條理。但是,上述的優點只有在對linux相當熟悉時,才能體會到。vmlinuz 我們已經知道,每乙個linux都有乙個核心 vmlinuz 我們在這個核心上新增上可以完成各種特定功能的模組,每個模組就體現在 linux中各...