作者laechan (小太保)
看板mud_sanc
標題[wizs] 數字圖程式
時間Fri Oct 7 10:57:43 2011
假設底下為顯示範圍
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 │
│3 │
│4 │
│5 │
│6 │
│7 │
│8 │
└──────────────────────────┘
2005年時寫過類似的東西,不過當時功力還不足,玩家有寫出
過辨識程式。
現在的話,要寫出程式無法辨識的數字圖基本上是辦得到的。
基本流程簡述如下..
一、r=random(數字範圍)
二、進行每個數字的顯示大小及字樣定義
a.先決定大小
b.再跑出字樣
c.儲存起來
三、再進行每個數字之間的「起始顯示位置設定」,以顯示圖
範圍為例,假設要顯示六位數字,那基本上最大寬度公式
max w = 2x2 + 7 x 6 + (7-1) = 52
四、加入雜訊
五、秀圖
這支程式並不難寫,出來的數字圖類似底下...
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 * **** * * ** * ****** * *** ** ** │
│3 * * ****** * * * * │
│4 *** ** **** ** * * * * ** *** │
│5 * * * ** **** ****** * * │
│6 *** ** *** *** * * * ** * ** * │
│7 * * * * * * * * * *│
│8 * * ***** * ****** │
└──────────────────────────┘
答案:284739
上面的意思就是..
一、數字的大小至少就有三種樣式(佔5、6、7行)
二、數字的起始顯示位置(從左上算起)最多有 3x5 種,不過依
數字的大小最少則是 5 種(平移區間)。
三、數字的字樣是隨機的,也就是殘缺or腫瘤顯示,例如4那個
字,左上就出現多餘的 *,而中段就缺少一個 *。
四、數字之間是可以交疊的,例如 7 跟 3。
五、數字圖攙了一定數量的「雜訊」,例如你會看到空白處有出
現 * 號。
像這種圖要破解就有一定難度了。若要做為防機程式,則有幾個
原則必須掌握..
一、我們允許程式跑出「真的無法辨識的圖」。
然後請玩家等待一段時間等圖更新再試一次即可。這時的重
點就放在「這類圖的出現機率真的很低」。
二、我們允許玩家輸入錯誤的重試,但是重試必須限制時間及次
數。
然後失敗次數超過就要等待一段時間等圖更新再試一次。
比方容錯三次,這樣真正手動的玩家才能有機會在三次內猜
到答案。
三、程式無法百分之百防止掛機
這是因為不可能玩家每做什麼就跑出該判斷(會被玩家罵死)
,所以這時應該把程式擺在「重點處」,例如說 recall 點
、補品補充店、公會adv/train、以及像是不應該被經常使
用但偶爾必須用到的 en 指令、go 指令(行走)、login 時..
然後設定好週期觸發時間即可,例如玩家走動時只要判斷時
間到了就自動出現數字圖,然後玩家未回答出正確答案前就
不允許其走動、以及做其它相關的指令(en、recall等)。
然後允許玩家即使看到了數字圖也可以不必馬上回答,有空
時再回答即可(比方它正在戰鬥中這樣)。
也就是說不需要要求 100% 的防堵率,反而才能讓防機效率
達到最好。
以上心得跟大家分享。
Laechan@Sanc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.81.23.70
※ laechan:轉錄至看板 mud 10/07 10:58
1F:推 justinj :圖我看不出來是那幾個數字... 10/07 11:13
2F:→ justinj :基本上只要看的出來就可以寫出來..如果看不出來當然 10/07 11:15
3F:→ justinj :寫不出來... 10/07 11:15
4F:→ justinj :現在炸彈客的那個就看不大出來了(有時要cp出來加個空 10/07 11:17
5F:→ justinj :格來平移..但那是只加個一兩次而已...太多就沒法度了 10/07 11:18
6F:→ justinj :要嘛就用色盲辨別的那種來用<顏色>..不然根本看不懂 10/07 11:20
7F:推 justinj :ps.第1個數字看不大出來了...2 or 3..其它完全無法辨 10/07 11:41
8F:→ justinj :識 10/07 11:41
9F:推 AresMars :我覺得比起很多免空的 這個已經算好辨識了= = 10/07 11:52
看不出來你可以猜。
猜n次沒猜中,就請你等一分鐘等圖更新再猜。
猜錯沒關係,不會有任何懲罰,只是你無法 go、recall、heart、etc..
這個程式如果要做為防機用的基本原則就是「允許玩家猜錯or猜不到」。
而且他頂多 1 小時跑出來一次,以及登入時、到公會 train 技能時、
adv lv 時....才會出現,不會對手動玩家造成什麼太大困擾
※ 編輯: laechan 來自: 115.81.23.70 (10/07 12:35)
10F:→ hlead :來個答對送10點學點也不錯.. 10/07 14:54
11F:推 justinj :現在最怕的是...猜那個猜了十幾次都猜不中... 10/07 16:39
12F:→ justinj :我只有第一個看的懂..也就是說剩200000種可能..sob 10/07 16:40
13F:→ justinj :..這個還是有答案的情況下去看...到時出一個要怎麼辦 10/07 16:42
14F:→ justinj :.....amem 10/07 16:42
15F:→ justinj :這個還是認定它是寫"正體"的情況下..如果再變成斜體 10/07 16:44
基本上,你看不懂,你可以貼出來問別人看看。
又或者還有一個方法,你把圖貼到記事本,然後把那些雜訊
先消掉,把殘缺的部份試著補一下,那或許你就能懂了。
這是稍微處理完之後的結果
****** * * ****** ******
* * * ****** * * *
****** ******* * * * * ******
* * * ******* ****** *
****** ******* * * * *
* * * * * *
******* * ******
2 8 4 7 3 9
實際上出現數字圖時是上面的型式(不會有邊框),然後某些
地方會殘缺或長瘤,外加一些雜訊。
※ 編輯: laechan 來自: 115.81.23.70 (10/07 18:19)
16F:推 justinj :現在看的懂了...這是在認定它是正體字的情況下.. 10/07 18:18
17F:→ justinj :第二個方法是要知道那些是才能做..也就是說第2方法no 10/07 18:19
18F:推 hmml :要交疊的話,至少顏色要有所不同... 10/08 02:32
19F:→ laechan :看不懂沒關係,棄答即可 10/08 02:55