作者laechan (揮淚斬馬雲)
看板mud_sanc
標題Re: [wizs] 隨機地圖的生成
時間Thu Nov 22 06:59:12 2018
續上篇,今天會從這篇開始編輯,目標是完成第一型隨機地圖
的產生架構,我是認為第一型就夠應付大部份的區域需求,所
以等完成並確定可跑之後,會改寫為 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 來寫的話甚至可以讓使用
者用拖曳的方式來擺圖。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.106.224
※ 文章網址: https://webptt.com/m.aspx?n=bbs/mud_sanc/M.1542841155.A.B1E.html
1F:→ laechan : 目前預測一大早會被長官抓去泡茶聊選舉 11/22 07:13
※ 編輯: laechan (122.117.106.224), 11/22/2018 11:28:28
2F:→ laechan : 備案就是用 textarea 來顯示(它也很方便複製貼上) 11/22 17:54
3F:→ laechan : 不過這是最不得已的做法 11/22 17:54
4F:→ laechan : <pre></pre>這個標籤可以將其包起來的文字排版、格 11/22 17:56
5F:→ laechan : 式,原封不動的呈現出來 <= 這個我晚上會 try try 11/22 17:57
6F:→ laechan : 剛試了一下可以, 那就沒問題了, 改寫為 javascript 11/22 17:58
7F:→ laechan : 的最後一塊拼圖 11/22 17:58