最近我遷移住所,到了個交通較不便的地方
所以畢業前(最快105年6月底)應該是不太需要考慮求職了
不過我還是調整了下電動時程表
總算是有些時間處理網頁遊戲程式設計(或遊戲程式設計)了
約花了5小時來寫RPG地圖障礙物實作
會寫那麼久的原因是實作時我原先採用的做法有個問題一時想不出來原因
也因此我這次作品就放兩個版本留作紀念
(較好的說法應該是供各位參考,不過實質上就是紀念意義)
作品網址依然是http://1drv.ms/1EX2Ux0
因為安全性問題
OneDrive已經停止短網址功能
所以之前短網址連結一律修正為
https://onedrive.live.com/redir?resid=B90617D056EA2F32!124&authkey=!AKj_OaqXtM7Rjc8&ithint=folder%2cpng檔案是:obstacle.html跟obstacle_debug.html
obstacle.html在某狀況下人物會太空漫步(漂浮)
後來為了找原因,做了個有顯示座標值的偵錯版本,也就是obstacle_debug.html
不過obstacle_debug.html現在是找出問題改寫後的版本了
若沒有找到致命的問題的話可能也是最終版本
雖然我不確定這麼寫效率上是否會有些問題
(或者說就算有問題,我暫時也想不到如何改良)
obstacle.html的障礙物示意圖如下:
也就是人物只能夠在外圍繞一圈
obstacle_debug.html則是:
雙障礙物的實作,人物不但只在外圍繞,還有個角落走不通
在談RPG障礙物實作前
首先要先修正下之前檔案的問題
雖然那時我操作也覺得怪怪的,但不是很確信自己的感覺
但在修正RPG障礙物實作過程時
很肯定的感到那問題就是:座標上限值設錯
之前的檔案若人物移動到邊界(右邊或下方)
之後再往邊界方向按移動鍵一陣子後再切回方向的話
會花些時間才開始踏出第一步
說得更具體些就是,原先的座標值設定忘記減掉角色圖檔大小(96*96)
也就是以前設座標上限值的程式碼要從這樣
if(w<=0) w=0;
else if(w>=1366) w=1366;
if(h<=0) h=0;
else if(h>=768) h=768;
改成這樣
if(w<=0) w=0;
else if(w>=1366-96) w=1366-96;
if(h<=0) h=0;
else if(h>=768-96) h=768-96;
由於打這篇文時剩下的時間不是很充足
就先停在這邊
程式碼說明留待明天或以後再補
其實自己看應該也能看得懂啦!!
畢竟我的思維也蠻單純的
那obstacle.html程式碼改的地方是
增加了個 map_obstacle陣列
格式是 [左上角x座標,左上角y座標,障礙物佔的長度,障礙物佔的寬度]
然後在draw_hp底下的if(move_character==0)底下
多了個條件判斷式跟些判別方向的switch case做相應的操作
至於obstacle_debug.html
也是增加 map_obstacle陣列,但是雙障礙物,所以元素個數是兩倍
(因為第一個html單障礙物就有些問題了,因此還沒做雙障礙物)
格式跟前述自然是一樣的
接著是在move_in_maze
按上下左右鍵的程式多了個判斷
(也就是先判斷再決定要不要移動,前個檔案是採事後修正的做法)
然後新增了個副程式,也就是function detect_obstacle
嗯,大致上就這樣
剩下的等明天或以後再談吧
也要想下接著要實作什麼功能(人物跟隨還是劇情觸發或地圖切換)
(囧,我上述是不是把之後要講的也講掉了啊?唔...應該還是有些細節要補充下啦!!)
哦,對,若覺得我程式碼寫得好像哪邊怪怪的
可能是因為有個功能是:
切換成橘色蛇時(上個作品用A鍵切換角色),可無視地圖障礙物