摘要:前言偶爾看到兩年前寫的貪吃蛇,當(dāng)時(shí)沒把自動(dòng)尋路的算法寫好,蛇容易掛,周末找了個(gè)時(shí)間把當(dāng)年的坑填上,寫了個(gè)不會(huì)掛的貪吃蛇。
前言
偶爾看到兩年前寫的貪吃蛇,當(dāng)時(shí)沒把自動(dòng)尋路的算法寫好,蛇容易掛,周末找了個(gè)時(shí)間把當(dāng)年的坑填上,寫了個(gè)不會(huì)掛的貪吃蛇。
兩年前的版本_點(diǎn)擊查看
這次更新的版本_點(diǎn)擊查看
代碼比較簡(jiǎn)單,使用 canvas 完成游戲的畫圖,拋開 A* 算法的實(shí)現(xiàn),整個(gè) html 代碼在 300 行以內(nèi)~
源碼 :
https://github.com/myfjdthink...
首先要找出一個(gè)模式可以保持蛇不掛,這個(gè)模式就是
“跟著尾巴跑”
如果蛇頭和蛇尾是可以連通的,那么就不會(huì)掛。
所以只要保證任意時(shí)刻蛇頭和蛇尾能連通即可。
尋路的偽代碼如下:
if(head to flood){ // 蛇頭能連通食物 模擬蛇吃到食物后的狀態(tài) if(newHead to tail){ // 吃到食物后還能連接尾巴 安全 eat flood } else { // 吃到食物后無法連接尾巴 放棄 flow tail } } else { flow tail // 跟著尾巴跑 }
在吃食物之前,需要模擬吃到食物后蛇的狀態(tài),判斷此時(shí)蛇是否還能連接尾巴,由此決定是否吃掉食物。
如何找到最短路徑使用 A* 算法可以快速找到倆點(diǎn)之間的最短路徑,網(wǎng)上找了個(gè)實(shí)現(xiàn),就直接扒下來使用啦。
http://devpro.it/examples/ast...
目前只是實(shí)現(xiàn)了不死,在某些條件下,程序還是會(huì)陷入一個(gè)循環(huán),這個(gè)有空在改進(jìn)吧,歡迎提 PR。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91207.html
摘要:貪吃蛇并不是通過操作來完成移動(dòng)的,而是通過記錄貪吃蛇的路徑來將身體渲染出來。目前沒有內(nèi)置的操作符判斷對(duì)象的內(nèi)容是否相同。 還是用的vue,本來以為不合適,但想法錯(cuò)了。貪吃蛇并不是通過操作dom來完成移動(dòng)的,而是通過記錄貪吃蛇的路徑來將身體渲染出來。 一般移動(dòng)元素,我們都是變動(dòng)它的css達(dá)到目的,但我在寫貪吃蛇的時(shí)候發(fā)現(xiàn)這樣很難以實(shí)現(xiàn),參考了網(wǎng)上的資源,發(fā)現(xiàn)大部分人是通過記錄貪吃蛇的路徑...
需要具備知識(shí):1.html、css基礎(chǔ)2.jquery基礎(chǔ) 具體實(shí)現(xiàn)方法: 創(chuàng)建游戲界面 .bts { display: flex; } .bt { width: 60px; height: 24px; line-height: 24px...
需要具備知識(shí):1.html、css基礎(chǔ)2.jquery基礎(chǔ) 具體實(shí)現(xiàn)方法: 創(chuàng)建游戲界面 .bts { display: flex; } .bt { width: 60px; height: 24px; line-height: 24px...
摘要:貪吃蛇類默識(shí)貪吃蛇速度,毫秒地圖軸分為多少單位地圖軸分為多少單位貪吃蛇運(yùn)動(dòng)速度貪吃蛇每節(jié)身體和食物的寬高地圖軸分為多少單位初始化貪吃蛇屬性蛇移動(dòng)方向食物和食物的坐標(biāo)游戲開始創(chuàng)建地圖初始化食物初始化貪吃蛇綁定鍵盤方向更改貪吃蛇方向移動(dòng)貪吃蛇創(chuàng) /** 貪吃蛇類 @author 默識(shí) @param {int} speed 貪吃蛇速度,毫秒 @param {int} x 地圖x軸分...
閱讀 2976·2023-04-26 02:25
閱讀 2249·2023-04-25 18:05
閱讀 647·2021-09-30 09:57
閱讀 2943·2021-09-27 14:10
閱讀 1652·2019-08-30 15:44
閱讀 1003·2019-08-29 15:28
閱讀 2524·2019-08-29 14:10
閱讀 2263·2019-08-29 13:30