單片機游戲設計之貪吃蛇用C語言也是有可能的
第二就是時鐘:這個其實是游戲的速度,對于一般的弱智類游戲機,他也代表了難度,物體在每個時鐘到 達的時候就傳動一次,例如俄羅斯方塊沒個時刻向下跑一層。賽車游戲每個時刻想前走一 步。一般這類時鐘的時間在0.X秒到1秒之間,物體有規(guī)律地勻速運動,讓人看到感覺是連動。
本文引用地址:http://www.ex-cimer.com/article/201611/323680.htm第三運動:在這里,我先介紹兩種比較普遍的弱智游戲機的物體運動規(guī)則:柔體傳動,剛體傳動。 剛體傳動 代表作是俄羅斯方塊,所謂剛體,就是硬硬的一個東東,運動的時候也不怎么旋轉(注 意,俄羅斯方塊是會旋轉,但其實他是沒有經(jīng)過算法的旋轉,純提取數(shù)組的方式,也就是 把一個放塊做成4個模式的點陣結構,其實就是4個方向,呵呵)對于剛體的傳動,在每個 時鐘到達的時候向一個方向(很可能是用戶輸入的)運動一個固定點陣。如果以坐標來表 達,就是物體的所有基本點陣同時向一個方向(X或Y)移動一個單位。 柔體傳動
代表作是貪吃蛇,貪吃蛇跑動的時候并不是整條蛇向一個方向動的(呵呵,蛇蛇身體僵硬 了),而是在每個時鐘的到來,物體由能量頭帶動(如蛇頭),每個點的方向都向下一個 點傳播,然后自己向新的方向走動一步,走動后,下一個點由于得到了上一個點的方向并
同樣地運動一步,所以,他會馬上填補上一個點的地方,如此類推。 說的好象沒說,看不懂沒關系,因為實際的算法可以簡化(傻瓜才會一個個點來走的), 實際上在設計貪吃蛇的時候,只需要把蛇尾巴的那個點陣去掉,然后在蛇頭的新方向放一 個點陣就是了。期間需要記錄下每個蛇身的固定點陣的位置,并且在每個運動時刻過后刷 新一次每個點的位置。
第四顯示接口: 我們用的一般是點陣式LCD,就是一大片點點,128*64,132*64,240*128等等等等啦,這 些又叫條屏,就是一寫就寫一條——8個點(有的也提供寫一個點的功能,但貴,至少我沒 有),那么如果你只想寫一個點怎么辦?那就得先把這個點所在的條讀出來,然后通過 與,或,的運算后,再放回到LCD上,這時候就要涉及到一個讀LCD的問題了,有的LCD提供 讀的功能,你寫過什么在上面他記的很清楚,但有的便宜貨 就不行了,那么我們怎么辦?沒關系,你在內存中提取出一片空間,虛擬一個LCD出來,每 次寫在真實LCD上面的時候,也同時寫到內存的哪個虛擬LCD上,那么你要讀出LCD的值的時 候實際就是讀出虛擬LD上的數(shù)據(jù),然后與或后,再重新寫到LCD上,記得也要寫到虛擬LCD 上哦。你可以把這片緩沖叫做顯存,
第五。游戲流程:蛇向一個固定方向進行柔體傳動,沒個運動時鐘到達要做:1。判斷食物標志,沒有食物了 就放一個,放的時候判斷,不能和蛇身重疊 2。得到用戶按鍵值,蛇走一步,并判斷是否 撞死了,沒撞死,再判斷是否吃到東西了,沒有吃到,就等下一個運動時鐘,吃了?就增 長一點。置一個沒有食物的標志。然后等待下一個時刻的來臨。 呵呵,其實程序就是這么簡單,基本設計只有LCD部分和按鍵部分是和單片機有關的,其他 都是程序思維和算法。對于菜鳥來說,難度在于思維,而不是單片機。本程序源代碼可從http://www.51hei.com/bbs/dpj-18901-1.html處下載。
仿真效果如下:
評論