Re: [wizs] 隨機地圖的生成

作者: laechan (揮淚斬馬雲)   2018-11-22 11:40:00
下午繼續,下午會先測試一張大一點的圖 9 x 8,然後就開始讓它
跑分支,我預估分支的部份會用掉一整個下午、甚至一整個晚上的
時間,因為我要先決定分支的跑法、然後再確定分支程式碼的細節
,這些都不難,難在 debug 的部份。
以下是 9x8 的範例,起點 0,0 終點 9,8,用來確定程式可 work
x (0,0)
|
x
|
x x-x-x-x-x
| | |
x x-x-x-x x
| | |
x x-x x
| | |
x x x
| | |
x-x x
|
x-x-x
|
x-x-x (9,8)
預計分支程式寫完後,會接著寫第二型隨機地圖的產生方式,
有趣的是,往後改寫為 javascript 時。第一型跟第二型都可
以用同一支包含 javascript 的 html 檔來解決。
==
開始漫長且無聊的 debug =.=
先跑出地圖
starts=({ ({ 0, 0 }), ..., ({ 6, 6}), ..., ({ 9, 8 }) })
然後開始跑分支
起點 ({ 9, 0 })
終點 ({ 6, 6 })
starts=({ ({ 0, 0 }), ..., ({ 6, 6}), ..., ({ 9, 8 }),
({ 9, 0 }), ({ 9, 1 }), ({ 2, 0 }), ({ 2, 1 }) })
^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
一開始跑出來的兩點是對的 我猜是有變數寫錯,再找 =.=
9x8 太大了,改一下,改成 .. 6x5
==
嘛,好像寫出了一個不得了的東西 O.O
起點 ({ 0, 0 })
終點 ({ 6, 5 })
all_starts=({ ({ 0, 0 }), ({ 0, 1 }), ({ 0, 2 }), ({ 0, 3 }), ({ 0, 4 }),
({ 0, 5 }), ({ 1, 5 }), ({ 2, 5 }), ({ 3, 5 }), ({ 4, 5 }),
({ 5, 5 }), ({ 6, 5 }) })
x
|
x
|
x
|
x
|
x
|
x-x-x-x-x-x-x
開始跑分支..
起點 ({ 6, 4 })
終點 ({ 0, 5 })
all_starts=({ ({ 0, 0 }), ({ 0, 1 }), ({ 0, 2 }), ({ 0, 3 }),
({ 0, 4 }), ({ 0, 5 }), ({ 1, 5 }), ({ 2, 5 }), 主線區
({ 3, 5 }), ({ 4, 5 }), ({ 5, 5 }), ({ 6, 5 }),
({ 6, 4 }), ({ 5, 4 }), ({ 5, 5 }), ({ 4, 5 }),
({ 4, 4 }), ({ 4, 3 }), ({ 5, 3 }), ({ 5, 2 }),
({ 4, 2 }), ({ 4, 1 }), ({ 4, 0 }), ({ 3, 0 }),
({ 2, 0 }), ({ 1, 0 }), ({ 0, 0 }), ({ 0, 1 }), 支線區
({ 1, 1 }), ({ 2, 1 }), ({ 3, 1 }), ({ 3, 2 }),
({ 3, 3 }), ({ 3, 4 }), ({ 2, 4 }), ({ 2, 3 }),
({ 1, 3 }), ({ 0, 3 }), ({ 0, 4 }), ({ 0, 5 }) })
x-x-x-x-x
| |
x-x-x-x x
| | |
x x x-x
| | |
x-x-x x x-x
| | | |
x x-x x x-x<-起點
| | | |
x-x-x-x-x-x-x
^
|
終點
也就是說,主線及支線分別長這樣:
x x-x-x-x-x x-x-x-x-x
| | | | |
x x-x-x-x x x-x-x-x x
| | | | | |
x x x-x mix x x x-x
| | | ===> | | |
x x-x-x x x-x x-x-x x x-x
| | | | | | | | |
x x x-x x x-x x x-x x x-x
| | | | | | | |
x-x-x-x-x-x-x x x-x x-x-x-x-x-x-x
效果比我預期的還好,但這不是我要的就是了。
那同樣的,以上面為基礎,再讓它跑一次:
起點 ({ 6, 1 })
終點 ({ 2, 0 })
all_starts=({ ({ 0, 0 }), ({ 0, 1 }), ({ 0, 2 }), ({ 0, 3 }),
({ 0, 4 }), ({ 0, 5 }), ({ 1, 5 }), ({ 2, 5 }), 主線區
({ 3, 5 }), ({ 4, 5 }), ({ 5, 5 }), ({ 6, 5 }),
({ 6, 4 }), ({ 5, 4 }), ({ 5, 5 }), ({ 4, 5 }),
({ 4, 4 }), ({ 4, 3 }), ({ 5, 3 }), ({ 5, 2 }),
({ 4, 2 }), ({ 4, 1 }), ({ 4, 0 }), ({ 3, 0 }),
({ 2, 0 }), ({ 1, 0 }), ({ 0, 0 }), ({ 0, 1 }), 第一支線區
({ 1, 1 }), ({ 2, 1 }), ({ 3, 1 }), ({ 3, 2 }),
({ 3, 3 }), ({ 3, 4 }), ({ 2, 4 }), ({ 2, 3 }),
({ 1, 3 }), ({ 0, 3 }), ({ 0, 4 }), ({ 0, 5 }),
({ 6, 1 }), ({ 5, 1 }), ({ 5, 0 }), ({ 4, 0 }), 第二支線區
({ 3, 0 }), ({ 2, 0 }) })
x-x-x-x-x-x
| | |
x-x-x-x x x-x
| | |
x x x-x
| | |
x-x-x x x-x
| | | |
x x-x x x-x
| | | |
x-x-x-x-x-x-x
這張圖就大概比較像我想要的。第二支線大概長以下這樣
x-x-x-x-x
|
x-x
也就是說對已經產生的 主線+第一支線 的地圖來說,等於多出
了以下的部份:
-x
|
x-x
大概寫到這樣就差不多了,還好在下班前搞定。
最後,來跑一張大張的,先來個一開始的圖:
x-x
|
x-x
|
x-x-x-x-x-x-x x-x-x
| | |
x-x x-x x x-x
| | | | |
x-x-x x x x-x-x
| | |
x x x-x x x-x
| | | | | | |
x x-x x x-x-x x
| | |
x-x-x-x x
|
x
|
x
|
x
路徑: e s w s 6e s w s 2e n e 4s 3e 2n w s w 4n 2e s w
s 2e 2s 2e n e 5s
以及最終跑出來我覺得看起來還可以的圖:
x-x-x-x-x-x-x x x x-x-x-x-x
| | | | | | | | | |
x-x-x-x-x x-x-x-x-x-x x x-x-x
| | | | | | |
x-x-x-x-x-x-x x x-x-x-x-x-x-x
| | | | | | | | |
x-x x-x x-x x-x x x-x x x x x
| | | | | | | | | | | | |
x-x x x x x-x-x x-x-x-x-x-x x x
| | | | | | | | |
x x x-x x x x x-x x-x x-x
| | | | | | | | | | | |
x-x x x-x-x x x x-x x x-x-x-x
| | | | | | | | | |
x x-x x x-x x-x-x-x-x-x x x
| | | | | | |
x x-x-x x-x-x-x-x x x
| | | | |
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
| | | |
x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x
https://imgur.com/avt526E.jpg

Links booklink

Contact Us: admin [ a t ] ucptt.com