弄乙個字元遊戲貪吃蛇對我來說已經非常難了,這次的智慧型蛇更是令人頭痛。在借鑑了大佬做的專案後,自己也跟著學習如何製作,畢竟600多行的**,於我而言,是非常難自己乙個人弄出來的。
演算法:
要讓蛇自己走,我們知道追著尾巴跑,蛇就不會死,所以我們以最短路線去吃食物時,要給自己留條後路,如果吃完蘋果還可以找到到自己尾巴路線的話,才去吃蘋果。
下面給出的是智慧型蛇的**的標頭檔案,函式等。
#include
#include
#include
#include
#include
#define map_length 40
#define map_hight 30
#define blank_cell ' '
#define wall_cell '*'
#define init_snake_length 3
#define snake_head 'h'
#define snake_body 'x'
#define snake_food '$'
#define up (input == 'w' || input == 'w' || input == 72)
#define down (input == 's' || input == 's' || input == 80)
#define left (input == 'a' || input == 'a' || input == 75)
#define right (input == 'd' || input == 'd' || input == 77)
#define pause (input == ' ')
#define cheat (input == 'c' || input == 'c')
void initsnake();
void initfood();
void printmap();
void printmode();
void initgame();
void printsnake();
void printfood();
void printlength();
void productfood();
void eatfood();
int inputvalid(char input);
void snakecontrolmove(char input);
void snakeautomove();
void snakemove();
int snakedie();
void startgame();
void selectmode();
void playgame();
void gamepause();
void gameover();
void restart();
void locatecursor(int x, int y);
void switchcursorvisible();
void inputname();
void gettime();
void initrank();
void ranking(file * fp, struct player player);
void printrank(file * fp, struct player player);
void rank();
void switchcheatmode();
void snakesmartmove();
把每乙個函式打完,然後在把每乙個函式debug好,雖然整個過程整個人是崩潰的,但是整個專案一做出來還是很有成績感的。 智慧型蛇的製作學習
首先,智慧型蛇的大部分 與貪吃蛇相同,但是智慧型蛇能夠自主規劃路線,精準吃下食物。他看起來像是人工智慧,其實有很大區別。怎麼使蛇能夠自己吃下食物呢?接下來我們來看一下他的演算法。for i 0 i 4 i else else 這段 是加在move函式後面的,在走完一步或者是吃完食物之後,它便會判斷前...
貪吃蛇學習過程
貪吃蛇遊戲的設計 首先就是確定好思路 自頂向下,逐步求精 下面是程式的總體結構 while not 遊戲結束 do ch 等待輸入 case ch do a 左前進一步,break d 右前進一步,break w 上前進一步,break s 下前進一步,break end case 輸出字元矩陣 e...
字元遊戲 智慧型蛇學習記錄
1.決定蛇行走的方向函式的偽 hx,hy 頭的位置 fx,fy 食物的位置 function wheregonext hx,hy,fx,fy 記錄可走的方向 用陣列distance 3 記錄離食物的距離 分別計算蛇頭周邊四個位置到食物的距離。h頭的位置,f食物位置 例如 假設輸入 a 則distan...