新的 map 指令 - 聖殿英雄傳說 MUD
By Xanthe
at 2018-12-03T12:01
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
--
重新寫。新的 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
By Hedda
at 2018-12-05T09:58
at 2018-12-05T09:58
Related Posts
華盛頓明日登場
By Zanna
at 2018-12-03T11:20
at 2018-12-03T11:20
聽說CV快死了,所以我來燒個紙
By Linda
at 2018-12-03T08:14
at 2018-12-03T08:14
近況
By Gilbert
at 2018-12-03T07:49
at 2018-12-03T07:49
聽說CV快死了,所以我來燒個紙
By Quintina
at 2018-12-03T02:44
at 2018-12-03T02:44
【大富翁次數加碼送】
By Jessica
at 2018-12-03T00:10
at 2018-12-03T00:10