設計思路如下:定義乙個函式,用於判斷蛇的下一步該往哪個方向走
函式偽**如下:
function wheregonext(hx,hy,fx,fy) // hx,hy: 頭的位置,fx,fy:食物的位置
記錄可走的方向
用陣列distance[4]= 記錄離食物的距離
分別計算蛇頭周邊四個位置到食物的距離。
例如:distance[0] = |fx – (hx-1)| + |fy – hy|
如果 hx-1,hy 位置不是blank,則 distance[0] = 9999
選擇distance中存最小距離的下標p,注意最小距離不能是9999
返回 movable[p]
}
具體**如下
char wheregonext(int hx, int hy, int fx, int fy)
}return movable[p];
}
完成這一函式後,只需將原**判斷鍵盤輸入並定義方向的部分刪去,再將此函式插入即可!(別忘了加上 math.h 標頭檔案)這樣,會自動尋找食物的「智慧型」蛇就完成了!不過這一演算法存在缺陷,經常走著走著就把自己繞進去死掉了!
由於課程要求,本次實驗需要在linux中完成。所以我們需要將我們的**做如下修改:1、把原來的清屏函式 system(「cls」) 改為 printf(「\033[2j」) 對此不熟悉的網友們可以參見c語言與vt100控制碼程式設計
2、把原來的控制速度函式sleep()改為sleep(),同時把頭檔案 windows.h 改為 unistd.h ,需要注意的是sleep()的單位是毫秒,而sleep()的單位是秒
這樣,我們的程式基本就可以在linux環境下執行了!
本人初學c語言不久,若有錯誤,還望指出,不勝感激!
貪吃蛇高階 智慧型蛇
做完了人工操控的貪吃蛇,由於太懶了 我們來設計乙個可以自動尋找食物的智慧型蛇吧w 思路 我們只需對原來人工操作的貪吃蛇 稍作修改即可。首先,我們要讓蛇能夠根據食物的位置自動判斷自己移動的方向。注意,此時如果只是簡單判斷蛇的head與食物的距離,蛇就非常容易把自己繞死。這時有乙個比較簡單的思路 遍歷全...
智慧型貪吃蛇
include include include include include include include include void food void show void move void turn void check void ini void calculate int movable...
自己走的貪吃蛇
這次設計貪吃蛇自己走比之前會動的蛇和會吃的蛇多增加了一部分知識 應用sleep函式和kbhit函式,sleep函式控制程式每隔多久停止一下,而kbhit函式則是讓程式在沒有輸入的時候會持續執行 通過與sleep函式的搭配使得貪吃蛇能夠在不接受指令的時候沿著原方向走。話不多說貼 吧 include i...