新的 map 指令 - 聖殿英雄傳說 MUD

Xanthe avatar
By Xanthe
at 2018-12-03T12:01

Table of Contents

這東西我已經在 tmi2_v3_改 實裝,不過 sanc 使用的版本我打算
重新寫。新的 map 指令同樣只適用在新型態區域,這是趨勢。

這個指令的構想很簡單,玩家從未到過的區域,剛從入口進去時,
按 map 指令只會顯示比方如下

o-
|

假設該玩家向右移動了一格,按 map 指令時則會顯示如下

x-o-
|

也就是說,隨著玩家的不斷探索,看到的地圖才會越大,而且會不
斷紀錄玩家走過的點。

以一個有 2xx 個房間的地圖來說就代表有 2xx 個點,我依稀記得
的印象是我將 2xx 先除以 n,它就會分成很多段: 1~n、n+1~..,
然後有走過的點以 1 替代,沒走過的點以 0 替代。

然後去對像是這樣的東西做運算:

(11111111) = 255
2 10

也就是說 255 這個數字就代表 11111111 = 玩家這八格有走過,
而 10110011 = 這八格玩家有走過的有五格,沒走過的有三格。

這時候 10101110101010101111...........01010101
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 長度 2xx

就可以拆解為以下存起來

({201, 192, 303, ...... })
^^^^^^^^^^^^^^^^^^^^^^^^^^ 長度 < 2xx

因此重點是選取適當的 n 值。

還原的部份只要簡單寫個函數就能辦到:

varargs string a_to_b(int n,string tmp)
{
if(!tmp) { tmp=""; }
n>0 ? return a_to_b(n/2,""+(n%2)+tmp) : tmp;
}

> call here;a_to_b;63
房間(/u/l/laechan/workroom)-> a_to_b( 63 ) = "111111"

call here;a_to_b;200
房間(/u/l/laechan/workroom)-> a_to_b( 200 ) = "11001000"

b_to_a 函數也類似的寫法。


這個是 belldandy 提供的點子,下一次的月例大賽,會有跟這個
類似的東西出現。


LAechan

--
Tags: 線上

All Comments

Hedda avatar
By Hedda
at 2018-12-05T09:58
邊吃泡麵邊簡單打一下這篇

華盛頓明日登場

Zanna avatar
By Zanna
at 2018-12-03T11:20
憋王華盛頓於Twitter上表示 Tomorrow, court is in session https://t.co/3TSgMhd1NB 不過稍早華盛頓不小心在自己官網自爆了隊伍Logo及隊伍造型 https://i.imgur.com/lPSgLSA.jpg 非常的美國 此外12月1日mykl表示M ...

聽說CV快死了,所以我來燒個紙

Linda avatar
By Linda
at 2018-12-03T08:14
※ 引述《anandydy529 (AndyAWD)》之銘言: : 至少玩日航還有爽過 : 以下是美航的心(抱)路(怨)歷程,有些是印象可能有錯誤 印象錯誤的部分還蠻多的, 美航也是爽過的. 我現在很少玩CV, 但以前CV也玩了一千多場, 回頭一邊翻著戰績一邊回文. 以下戰績都是PvP, 勝率小數點後都無條件 ...

近況

Gilbert avatar
By Gilbert
at 2018-12-03T07:49
這禮拜沒啥時間可以 coding,公司有蠻多事要忙。最近身體 調整的狀況也不太好,像今天一早食慾就非常高漲,這代表我 最近可能有什麼東西吃不夠。今明兩天如果能撐過去就ok,趁 現在天氣還不是很冷,用最短時間把食慾壓低。 最近還有一個問題就是維生素C 攝取過量,這主要基於我很依 賴發泡錠,到了每天一顆的程度, ...

聽說CV快死了,所以我來燒個紙

Quintina avatar
By Quintina
at 2018-12-03T02:44
至少玩日航還有爽過 以下是美航的心(抱)路(怨)歷程,有些是印象可能有錯誤 我從公測到Quit都只玩美國線,巡洋起家 會玩美航起因是玩到奧馬哈看小飛機丟魚雷很好拿頭的樣子 四階時期,遇上日航鳳翔: 雖然美航艦戰打的贏日航,但只有一隊 不管怎麼樣都會看到鳳翔愉快的用艦攻收割 而且日航艦攻有兩隊, ...

【大富翁次數加碼送】

Jessica avatar
By Jessica
at 2018-12-03T00:10
【大富翁次數加碼送】(12/3~12/9) 活動時間:2018/12/3(一) 00:00 ~ 2018/12/9(日) 23:59 活動辦法:活動時間內有消費紀錄的玩家,消費滿1000就回饋全民撲克王中【超級大富翁 】免費次數40次。(單一帳號最多回饋240次) 配發時間:2018/12/10(一) ...