當前位置:製作窩 >

創意生活 >電子DIY >

石頭剪刀布手套:不止是寂寞宅的消遣手工電子DIY教程

石頭剪刀布手套:不止是寂寞宅的消遣手工電子DIY教程

石頭剪刀布手套:不止是寂寞宅的消遣

 

製作時間:5小時 製作難度:★★★☆☆ GEEK指數:★★★★☆

《憤怒的小鳥》製作者說他們的遊戲如此成功的原因之一是由於這款遊戲的定位是“打發時間”,人們可以在等待例如叫號、客戶、列車、下載等等的時候花不到 3 分鐘消滅豬豬們——在智慧手機如此流行之前,你還記得我們是如何消磨這些短暫的時間的嗎?—— 我們當然會玩“石頭剪子布”!我現在還經常玩這遊戲。我可以憑經驗告訴你,這遊戲可是有些真正的策略的,絕對可以通過簡單地實戰來提升你的技巧。

 

然而有個老兄還設計了他自制的剪刀石頭布遊戲手套,讓你在找不到對手的時候自娛自樂。精心設計的演算法還會找出你的弱點——這讓對戰的挑戰性著實增強了,下面就來隆重推出這款“石頭剪刀布手套”。

名兒有點長,叫它剪刀手Edward吧,反正這也是個小機器人,跟Waston一樣一樣的~

 

這是一副會跟穿戴者進行激烈的“石頭剪子布”遊戲的手套,它會學習穿戴者的遊戲風格,在遊戲中針對他們的弱點。

聽上去很酷吧?!

這是為什麼呢?我自己也不是完全肯定。追蹤靈機一動的源頭往往是無稽之談,不過有時還是能夠逗弄出某個主題的。在本例中我的主題就是讓電腦能夠根據我們的規則與我們進行互動。鍵盤和滑鼠之所以被造出來,就是讓機器觀察我們的行為的。但我們必須學習如何使用鍵盤和滑鼠(以及電話)好讓機器能夠理解我們。

科技在鍵盤和鼠標出現這之後有了飛速的進步,那麼我們的互動介面也該進步起來。我們不應該非學習如何使用科技不可——讓機器來“讀懂”我們吧。

 

因此這副手套可以和人玩兒“剪刀石頭布”,而玩家不需要學習任何使用方法。只要戴上手套開始玩兒,這副手套自然就會跟你對戰了。

我在公眾場合將它拿出來過幾次,人們在第一次玩兒時基本上不需要什麼指導,他們對此大感驚奇。

它會記憶你的遊戲風格,因此如果你老是出石頭,那麼它就會傾向於出布。而如果你傾向於在出了石頭以後再甩出一個布,那麼它就會用剪刀回擊。

這副手套目前跟我玩兒五局三勝制的對戰記錄為 71 勝 62 敗。

繼續閱讀,你可以瞭解我是如何製作它的,以及你在製作自己的手套時需要的所有的電路圖和程式碼~

 

 

1   設計● 如果你想要製作某個會玩兒“石頭剪子布”的玩意兒,那它應該具備哪些功能呢?

1.獲取手所處於的姿勢。(石頭、布,或者剪刀。)

2.獲取拳頭的揮動,這樣它就知道該在什麼時候出手了。

3.選擇一個遊戲手勢,然後……

4.和玩家同時出示遊戲手勢。

● 以上這些功能都可以通過一套複雜的視覺系統、一兩臺高速攝像機,以及一臺實時地處理資訊的完整計算機。但跟我們追求的理想境界相去甚遠。這樣做開銷太大、非常複雜,而且還不是很可靠。最重要的是:它不能塞進你的口袋裡。

 

● 來點更低碳的方法!我們需要從三種手勢中識別出一種,石頭(所有的指頭都彎曲)布(所有的指頭都伸直)以及剪刀(兩根指頭彎曲,兩根指頭伸直)。

從這個角度看來,我們所需要做的只是觀察兩根手指的彎曲狀況,也就是中指和無名指。(食指和/或小指也行。)如果他們都是彎曲的,那就是石頭,如果他們都是伸直的,布,如果靠邊上的那個是彎曲的,則是剪刀。

如何測知物體彎曲的最淺顯的答案就是彎曲感測器了。這有點殺雞用牛刀之感,因為我並不需要了解彎曲的程度大小,只需要知道是否彎曲罷了。

正好有那麼一個彎曲感測器,其大小和規格正好適用於手套的指部。就好象是專門定製的一樣!實際上它們就是專門定做的——這些就是在任天堂電力手套(Power Glove)上的彎曲感測器!!!

 

● 好了,我們能夠感應手勢了,但我們如何感應手的揮動呢?我用一個簡單的微動感測器進行了測試。它基本上就是一個在密封杯中的鋼珠。當它安靜地躺在杯底時,電路就能流通,而當它受到碰撞時,鋼珠就會滾動,電路就斷開了。它便宜又好用,適合許多應用場合,不過在玩兒了幾次以後我發現它落回杯底保持穩定所需的時間太長了,而又無法調整靈敏度。手只要輕輕顫抖就會讓它斷電,重新歸位則需要一兩秒鐘。一言以蔽之,它能夠檢測你的手是否在移動,但無法分辨出每一次的揮動。

之後我想到了用加速度儀,類似於 iPhone 或任天堂 Wii 的遙控器裡的那玩意兒。那是一塊小小的晶片,可以獲取三個方向上的加速度。

這是第二把殺雞用的牛刀了 - = ,因為我們其實只需要檢測一個方向上的揮動(至少我是這麼覺得的),但它的精度很高,而且有不同級別的靈敏度,使用起來也很簡單、小巧、耐用,而且耗電量也小——所以就選它了。

 

● 現在讓我們給這個玩意兒賦予一些智慧吧。要讓它隨機出手是很簡單的,但我想要讓它玩起來更棒。要做到這一點,它就需要能夠記憶穿戴者的遊戲風格、他們的出手模式,並選擇最佳手勢來取得勝利。那就需要某種微控制器和一些程式了。

我選擇了 Arduino Mini Pro,因為它小巧、輸入輸出介面數量足以滿足我的需求,而且我跟它“合作”過很多次了。它也是執行在 3.3 伏電壓上的,就像我們所使用的加速度儀和大部分 LED,而且便宜又全能。最重要的是,它帶有長期記憶功能,這樣我們就能將幾次遊戲中的統計資訊儲存起來,為我們的猜測演算法服務。

 

● 最後,如何顯示手頭選擇的手勢呢?這裡有多種選擇。最簡單的方法只需要一盞下面貼有記號的燈,但這樣就顯得不夠賣騷,而且需要玩家去看記號,當你眼前有一盞燈亮著的時候就很難看清了。理想情況下我希望能有讓玩家立刻識別出來的圖示。

關於分層邊緣照明我有好幾個創意點子。其中大部分是在我讀《邪惡瘋狂科學實驗室》的關於邊緣照明節日賀卡的文章時想到的。很可能我從中學到的最棒的東西就是用聚酯纖維替代丙烯酸塑料。(McMaster-Carr 編號 85815K11)聚酯纖維板是很棒的玩意兒。它們的透明度很高,但又不像丙烯酸塑料那樣容易碎裂,而且可以用剪刀切割。

我不是完全確定雕刻出三層圖形並分層照明是否可行,於是我做了幾次試驗來確認。結果並不如我希望的那麼完美,底層的圖形有些變形了,不過依然可以識別。我在試驗中發現了一點:從背部進行雕刻可以產生點亮後更明亮、熄滅後更透明的圖形。我用帶有細小的磨削點的 Dremel 電磨進行雕刻,但要是有機會的話,我更想看看用鐳射切割器做出來的效果。用鋁帶包裹住每一片的邊緣可以大幅提高亮度。

(邊緣照明的顯示效果還行,但並不理想。石頭在頂層,剪刀在當中,而底層的布有點不太好認了。)

 

● 當大致確定了設計方案後,我開始著手研究細節。首先確保一切都能協同運作,或者經過改動可以協同運作。由於我希望整個裝置能夠放入手套的手背部位,所以我做了些部件的紙剪影,將它們貼在我的手套手背上,來確定佈置和走線的方案。我決定將顯示器放在拇指的第二關節上,這樣在甩出石頭或者布的時候玩家就能看得見了。然後我歡快地檢查了我的工具箱,購買了所需要的東西。

● Sparkfun 上面有這個專案中我所需要的一切材料。提示:當你在郵購任何元件時,至少多買一個。如果你意外地折斷、燒壞、或者吃掉(你是有多餓啊……)了某個零件,你就不需要等待郵遞員為你帶來新的零件了。

 

2   製作我通常喜歡從最不確定的方面入手。這樣的話萬一我陷入困境了,我還可以轉而處理些簡單點的部分,直到我搞清楚該如何繼續下去。雖然這裡面有許多理論上並不確定的地方(我過去從來沒有應付過這些實際的零件),但我對它們的規格很熟悉,也讀了很多的文件,發生什麼都不會感到意外。

真正的未知在於邊緣照明顯示。我不確定能夠讓它可識別,因此我一開始做了幾次試驗。最後,我選擇了普通的 5mm 圓形 LED,並把它們的尺寸打磨到和塑料板的厚度相當,這樣我就能讓顯示器儘可能地薄一些,這樣對於透射光線也有好處。

我本可以使用長方形 LED,但我手頭沒有,而且它們的顏色種類並不是很齊全。

我認為給每個手勢設定不同的顏色是很重要的,因為這樣可以幫助玩家更快地識別出手,於是我試著給手勢選擇相匹配的顏色。(那種顏色最適合“剪刀”?)在我滿意地找到了一些可用的材料之後,我繼續完成剩餘的記分板佈線,接著開始研究彎曲感測器。

 

使用彎曲感測器是毫無疑問的,但說實話我對它們感到非常失望。它們只能獲取一個方向上的彎曲,不過這跟本專案沒什麼關係,但可以在今後引以為戒。感測器要能在手套上滑動,因為當手指彎曲時,其頂端比伸直時長1.3cm左右。出乎意料的是,“彎曲感測器”的連線頭居然不能彎曲。我沒考慮到這一點,製作時浪費了一倍以上的感測器。

 

在連線並校準了彎曲感測器後,這套裝置除了加速度儀以外大部分都完成了,我進行了一次預演。

我試著玩了一會兒,想知道當處於“自然”姿勢時在手套手背上會獲得什麼樣的反饋訊號,以及在揮動時會出現什麼反應。我很高興地看到它給出的反應很穩定,我都不需要通過任何平滑演算法來從中抽取有用的資料了。(至少在這一簡陋的應用中不需要。)

我用的加速度儀有四檔靈敏度,從 1.5g 到 6g。 4g 的設定似乎在揮動拳頭時可以產生最大範圍的資料一致性。我決定將三根軸都接上,而非僅僅是 X 軸,因為我覺得,不連白不連。我還有多餘的輸入介面。結果表明,這麼做幫我在之後節省了點力氣,因為我發現甩出“布”的時候很容易隻影響 Z 軸。

在我將所有的零件焊接到位之前,我沒有用模擬電路板測試過,這是一次大膽,當然也是愚蠢的行為。不過除了一處睏倦的誤焊以外,第一次嘗試中一切都執行良好。

最後我需要既能夠獲知手套運動,又能夠選擇合適的動作的軟體。在我開發遊戲多年的經驗下,這種事情對我來說算是第二本能了,我並沒有在開發程式碼中花多少精力。大致上這個問題可以分為三個可確認的小步驟,然後再將它們聯絡起來,直到我寫出令自己滿意的程式碼。這是一種學習如何開發的好方法。

我在這一遊戲之外給介面中添加了一些特殊的東西。

● 要想關閉遊戲的時候,只需出石頭即可。

● 要想從串列埠輸出儲存的遊戲資料(勝/負記錄等等),只需出剪刀即可。

● 而要想在診斷模式下執行,只需出“反剪刀”,即中指彎曲,無名指伸直。 為毛我覺得反剪刀姿勢的難度那麼大呢……

3   效果如何?

優點 人們能夠無需任何訓練就能使用它。我把它拿到公眾場合,讓毫無準備的人們試用,每個人都玩的很開心,而且每個人都能夠立刻進入狀態。唯一的實際問題在於有的人是揮兩下再出手,而其他人揮三下才出手。我目前還不是完全確定該如何讓它自動解決這個問題,但我已經想到了一些點子。

缺點 用彈性很好的手套會給所有的各類連線產生額外的壓力。雖然我在力所能及之處對連線進行了強化和收攏,但還是很難做到不需要將彎曲感測器彆扭地拉開就將手套脫下。我弄壞了正常需求兩倍的電源連線,雖然部分原因歸咎於 9v 電池接口出的糟糕的導線無法承受 9v 電池的質量在晃動時產生的劇烈移動。讓額外消除電源接線的應力,加上 9v 電池倉能夠一定程度上緩解這一問題。整個系統並不會消耗多少電力,因此我可能在下個版本中用一小節手錶電池來供電。

 

優點 它贏得較多,而且它會不斷學習。我觀察了我的資料,發現我從來不會在遊戲的一開始出石頭,於是據此調整了我的戰術。結果才交了幾次手,手套就發現了我的新戰術,進行了彌補。

缺點 彎曲感測器——它們相對而言很貴(每個要 13 美元,基本上和整個微控制器一樣了),不僅如此,還存在一個重大缺陷:一開始安裝的兩個感測器在工作了 700 次後就失效了。感測器本身帶有強化支撐,幫助它彎曲程度遠不會達到損壞的可能。不幸的是這一強化部分比主介面早 2mm 停下來,在如紙片般薄的基底上留出了一小段但非常重要的區域,可能被意外地輕易彎折,從而破壞感測器的連線。我想說這對於一個叫做“彎曲感測器”的玩意兒而言是一個設計瑕疵。在購買了替代品後(幾乎是整個專案成本的兩倍)我對將接線夾在兩層堅固的塑料中,塗上厚厚的膠水,進行了強化,消除了應力。到目前為止這樣的修整算是有效的,但彎曲感測器無法妥善應對彎曲實在令人失望。我正在不斷尋找其他更便宜更可靠的方案。

跟一些人談論了彎曲感測器的問題以後,他們提出了幾個很好的替換建議。一種是用光纜,從一頭髮射光線,在另一頭獲取光線的數量。另一種建議是用某種彈性導電的織物,當伸展時電阻會發生變化。這種材料每英尺要價 60 美元,但這樣可以構成許多感測器,而且我已經在尋找一些有意思的東西,加入到我的材料庫中了。

 

不太好看的細節 我並不期待有誰也做一個完全一樣的玩意兒,不過你可以從我的製作過程中學到些東西,因此如果你感興趣的話,可以看看下面的細節:

 

4   零件列表● 1 副手套

● 9v 電池

● 9v 電池插塞接頭

● Arduino Pro Mini 3.3v/8MHz-2 個彎曲感測器

● 2 個 1K 歐姆電阻

● MMA7260Q 三軸加速度儀。(帶有介面板)

● 6 個 3mm 白色 LED

● 單刀單擲滑動開關

● 12mm Piezo 揚聲器。

● 3mm 綠色 LED

● 3mm 紅色 LED

● 5mm 藍色 LED。

● 5mm 水色 LED(我不太清楚那裡能弄到。但很漂亮。)

● 5mm 白色 LED。-2 個 42 歐姆電阻。(注意:如果你用的 LED 都是 3.2~3.5v 的,那麼你可以將電路簡化,在 LED 上都不需要附加電阻。)

 

5   圖紙 

6   原始碼● 在這裡下載 Arduino主控板的設定資訊 。(或許你想知道 Arduino的使用方法 ?)

 

7   關於剪刀石頭布這個遊戲幾點不得不說的事來點事關和活人(不是機器)玩遊戲的題外話:我們在家庭日常生活中常常會玩“石頭剪子布”。當我們在決定誰挑選餐廳、誰去把洗碗機裡的餐具拿出來,或者誰掌握遙控器的時候,我們都會在一點上達成共識——總之我們聽從“石頭剪子布”的贏家。

如果你不熟悉這個小遊戲,那麼地球人都知道的規則是這樣的:剪刀剪破布、石頭砸壞剪刀、而布包住(擊敗)石頭。三局兩勝決定勝者。

直到最近,我都一直認為這遊戲純屬運氣,不過其實不是這樣的。這是一個關乎技巧的遊戲。噓……別把這訊息透露給我家裡人。他們都很奇怪我怎麼突然變成了“石頭剪子布”的霸主……

下面是基於心理學作用的“剪刀石頭布決勝 6 大祕訣” 。當將這些祕訣融會貫通後,我發現勝率高達 80%,還有 90% 的機率迷惑你的對手。

7.1   瞭解你的對手

知己知彼百戰不殆,連上文的機器手套都明白這個道理——研究表明女性在遊戲一開始有 60%~80% 的機率出剪刀(比男性高得多)。如果你跟一個女士對戰,那就多出石頭吧。有的人相信如果你有 66% 或以上的時候都出石頭,你就能輕鬆戰勝業餘玩家。憑我的個人經驗並不確定這一說法的真偽。

 

7.2   假動作

在你出手之前扭動手指,讓你的對手以為你要出別的手勢,攪得他心神不寧。例如,在你實際出布之前很快地擺出一個微妙的剪刀手勢(因為他以為你會出剪刀,所以就會出石頭)。

 

7.3   菜鳥石頭大部分新手在遊戲開始時會出石頭。因此,知道了這一點,如果你跟新手對戰,先出布吧。 喂喂~在碳基世界真的還有“石頭剪刀布”的所謂“新手”嘛? 

7.4   事不過三

有時人們會連續出石頭、剪刀或布,但他們幾乎從來不會連出三次。如果你的對手連出了兩次某種手勢,你可以預料他的第三次出手不會是之前連續出的那種。

 

7.5   潛規則…

大部分人會有潛意識的石頭、剪刀、布的出手規律。他們會頻繁按照同樣的順序出手。如果是這樣,在你跟別人對戰之前先研究一下他跟別人的對戰,這樣,你就能瞭解他的規律。

 

7.6   贏家效應!

最後一點,這個祕訣在你贏得了三局中的第一局時真的非常有用。大部分新手玩家會下意識地出剛才擊敗了他們的那個手勢。如果你剛剛用石頭擊敗了對手,那麼下一次就出布,因為他們很可能會出石頭。我根據自己的經驗,發現這一祕訣幾乎次次奏效。

 

雖然有點扯,我依然希望你能憑藉這些祕訣在“石頭剪子布”中好好地給對手點顏色瞧瞧!祝你好運!

 

8   拓展教程再介紹這個“剪刀石頭布”的高階教程(適合2人以上的玩家)。它包含了四種新的手勢,例如時間機器、食人族、克隆體和大拇指。這絕對會讓遊戲更加有意思的。來看看四個手勢的新功能吧:

● 基本手勢中多了一個“時光機”:用對手上一次的手勢對抗他當前的手勢。(還得考驗記性…)

 

修正手勢(跟基本手勢一起出):

● 食人族: 這個輔助手勢可以幫助你擊敗沒有食人族手勢但是跟你出了相同基本手術的傢伙,當然假如都出了輔助手勢就兩兩相消不起作用了。

● 克隆人:用雙手出相同的手勢,如果贏了 +2 分,如果輸了則 -2 分。

● 複數 i : 如果出“ i ”的玩家數為奇數,贏了這局的玩家得到的分數變成複數分,這個“複數分”演算法不一定,可根據具體的遊戲大家協商議定~

 

你可以自行修改這個手套的細節,像Sheldon四人組經常做的一樣,自己跟自己玩“石頭-剪刀-布-蜥蜴-史波克”(考慮到這個遊戲的難度,我覺得你很難在日常生活中找到一個可以相互匹敵的對手,所以也就只能自己玩了...)。不熟悉規則的,請自行復習TBBT。

 

  • 文章版權屬於文章作者所有,轉載請註明 https://zhizuowo.com/shenghuo/dianzidiy/3wpq3.html