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

作者: laechan (揮淚斬馬雲)   2018-11-22 06:59:12
續上篇,今天會從這篇開始編輯,目標是完成第一型隨機地圖
的產生架構,我是認為第一型就夠應付大部份的區域需求,所
以等完成並確定可跑之後,會改寫為 javascript 並分享出來
,希望可以成為讓玩家應徵臨時工的方便工具,我有個區域構
想希望是由玩家來協助地圖供應的部份。
(第二型則可以由改寫第一型來完成,主架構都是類似的)
我這幾天主要是在想怎麼在網頁上呈現如同在 sanc 裡頭的結
果,畢竟 document.write 出來的東西要排版並不容易,不過
我大致有擬一個備案、以及我印象中似乎有某個東西有支援,
那就可以等改寫時再來 try。
==
我改寫了之前用來產生隨機地圖的函數,並把它放到 wiz 可
用的指令裡頭,以下是最近一次跑出來的結果:
> run_map
// 由程式所產生的從 (0,0) 到 (4,0) 的路徑點
starts=({ ({ 0, 0 }), ({ 0, 1 }), ({ 0, 2 }), ({ 0, 3 }),
({ 1, 3 }), ({ 1, 2 }), ({ 2, 2 }), ({ 2, 3 }),
({ 3, 3 }), ({ 4, 3 }), ({ 4, 2 }), ({ 4, 1 }),
({ 3, 1 }), ({ 2, 1 }), ({ 1, 1 }), ({ 1, 0 }),
({ 2, 0 }), ({ 3, 0 }), ({ 4, 0 }) })
// 依據上面的東西所產生的路徑圖
x x-x-x-x
| |
x x-x-x-x
| |
x x-x x
| | | |
x-x x-x-x
再跑個幾次,以下是產生的另兩條路徑
> run_map
x x
| |
x x
| |
x x-x x
| | | |
x-x-x x-x
> run_map
x x-x-x
| |
x x-x x-x
| | | |
x x-x-x x
| |
x-x-x-x-x
這裡先說明一個簡易產生大圖的做法,比方根據上面,我們產生
了三張圖
第1張圖 第2張圖 第3張圖
x x-x-x-x x x x x-x-x
| | | | | |
x x-x-x-x x x x x-x x-x
| | | | | | | |
x x-x x x x-x x x x-x-x x
| | | | | | | | | |
x-x x-x-x x-x-x x-x x-x-x-x-x
這時候在相鄰的圖之間隨意加 - ,以下是兩個範例
第1張圖 第2張圖 第3張圖
x x-x-x-x-x x-x x-x-x
| | | | | |
x x-x-x-x x x x x-x x-x
| | | | | | | |
x x-x x x x-x x x x-x-x x
| | | | | | | | | |
x-x x-x-x x-x-x x-x x-x-x-x-x
第1張圖 第2張圖 第3張圖
x x-x-x-x x x x x-x-x
| | | | | |
x x-x-x-x-x x x x-x x-x
| | | | | | | |
x x-x x x x-x x-x x-x-x x
| | | | | | | | | |
x-x x-x-x x-x-x x-x x-x-x-x-x
或是我們也可以這樣做:
第1張圖
x x-x-x-x
| |
x x-x-x-x
| |
x x-x x
| | | |
x-x x-x-x
|
x x-x-x x x
| | | |
x x-x x-x x x
| | | | | |
x x-x-x x x x-x x
| | | | | |
x-x-x-x-x-x-x-x x-x
第3張圖 第2張圖
也就是說,比方我們要產生一張 16 x 12 的大圖,那我們可以
產生 12 張 4x3 的小圖,再把這些小圖依以下的排法:
4 +4 +4 +4 = 16, 底下 3+3+3+3 = 12
小 小 小 小
小 小 小 小
小 小 小 小
小 小 小 小
然後手動設定一下 - 或 | 的串接路線,就能變成一張大圖,
而且附帶的好處是,在起終點之間的路徑以外的都是分支。
這部份依靠程式去跑是辦得到的,還可以讓操作者自由決定每
張小圖的擺放位置,以 javascript 來寫的話甚至可以讓使用
者用拖曳的方式來擺圖。

Links booklink

Contact Us: admin [ a t ] ucptt.com