這件事情其實發生在三天前
在實驗完Kinect v2之後,突然想起自己好像有一個小工具一直沒機會寫
結果一時興起就完成了這篇的主角「ofxCheatCodesTrigger」
後來想想,既然都花時間下去了
乾脆也順便丟到Github上面做為筆者踏向Open Source的第一個Add-on吧!
(※是說,其實還沒被加到ofxAddons上面)
(好吧,我承認我只是想推廣長頸鹿)
這個「ofxCheatCodesTrigger」故名思義就是一個跟密技有關的套件
相信有玩遊戲的人都知道
很多遊戲只要在特定畫面直接輸入一段特殊指令就可以開啟一些作弊功能
比方說Logo上寫的「↑↑↓↓←→←→BA」就是KONAMI的經典密技
這個Add-on就是一個方便加入特殊指令的工具
只要簡單幾個設定就能透過Event的方式來通知程式開啟一些指定的功能
這個想法是出自於專案開發時,都會在程式中加入一些測試用的功能
如果只是單純的字母來觸發,顯得有點無趣
於是就寫了這個功能,方便以後OF的開發可以更快速的加些什麼怪功能
(其實像Facebook跟Plurk都有類似的功能)
============分隔線=============
OK, 由來說明完畢,接下來簡單介紹一下怎麼使用
懶得看字的歡迎直接透過GitHub的連結看程式碼吧!
Source Code(GitHub):
環境簡介:
Windows 7 + Visual Studio 2012 + OF 0.8.1
基本上OF只要有支援ofEvent的版本應該都能用
Compiler方面,因為我有用到C++11的auto,這點之後再找個時間修掉(完全因為懶)
運作原理:
對著程式碼看應該會更好懂上面這張說明
在CHEAT_CODES_MAP裡頭,綠色字表示已經檢查過,紅色字表示正在檢查。
以這個例子來說,因為輸入的是"g",名為"KONAMI"的密技就通過了!
透過ofNotifyEvent,就可以觸發onCheatCodeTriggerEvent,並取得密技名稱。
另外update的部份,則是用來判斷是否輸入逾時。
逾時的時間則是在setup時就能設定,預設為10s
使用說明:
以下是個example中的部份程式碼:
1: void ofApp::setup()
2: {
3: ofSetVerticalSync(true);
4: _strDisplayMsg = "";
5: _BackgroundColor.set(0);
6: //Initialization
7: _CheatMgr.setup();
8: _CheatMgr.addCheatCodes("KONAMI!!", "[U][U][D][D][L][R][L][R]ba");
9: _CheatMgr.addCheatCodes("MONEY!!!", "give me the moneys");
10: ofAddListener(ofxCheatCodesTrigger::CheatTriggerEvent, this, &ofApp::onCheatCodeTriggerEvent);
11: }
12: //--------------------------------------------------------------
13: void ofApp::onCheatCodeTriggerEvent(string& e)
14: {
15: ofLog(OF_LOG_NOTICE, "Cheat Event!!! Name:" + e);
16: _strDisplayMsg = e;
17: _BackgroundColor.set(ofRandom(0, 255), ofRandom(0, 255), ofRandom(0, 255));
18: }
為了讓這個add-on能使用KONAMI的經典密技
在CheatCodes的設定中,是可用透過特殊字串來達到方向鍵的輸入的
規則是...[U]:上 [D]:下 [L]:左 [R]:右
目前的判斷方式要完全一樣才能使用!包含大小寫喔!(真不貼心
另外,輸入[[U]]的話,密技就會變為「[↑]」
============分隔線=============
其實這個add-on不怎麼花時間,對許多人來說應該都是用到再寫就好的程度
但做為第一個試著踏入ofxAddons來說,也算是不錯的回憶了。
簡單說明一下,要加入ofxAddons其實只需要上傳到GitHub並以ofx開頭或openframes開頭就可以了
官方說法是他們會透過GitHub的API自動去尋找並加入到他們的網站中。[1]
不過最近他們似乎在更新他們的程式,因此要等上一段時間才能看到長頸鹿出現在ofxAddons上了(沮喪
歡迎所有Openframeworks的開發者們,一同開拓ofxaddons!
=好寶寶Reference=
[1] Make your own!
沒有留言:
張貼留言