科技學堂
概述
“跟我一起做”是一款記憶類游戲機,由3個LED燈和3個按鍵組成。游戲總共設置了10個關卡。開始時,LED燈會按一定順序閃爍,閃爍結束后,玩家需要依次按下3個對應的按鈕。如果順序一致,進入更有挑戰性的下一關_如果按錯按鈕,游戲結束。游戲用Arduino設計,在制作過程中學生能夠得到計算思維和編程能力的鍛煉。
適合年齡
初中到高中
功能材料
Arduino UNO板(如有一體主板,可直接使用,如無一體主板,可安裝IO擴展板使用),LED模塊×3,按鍵模塊×3,3p連接線×6
結構材料
瓦楞紙板、彩色卡紙、藍泥膠、束線帶、裝飾貼紙
思路分析
在制作開始前,我們應該先理清整個游戲的思路,才能更好地設計游戲機的程序。我們可以先繪制流程圖,讓你的思路更加明確。
程序設計
步驟1:硬件連接
分別將藍、紅、黃3個按鈕杜邦接口端接在Arduino的5、6、7接口上,再將藍、紅、黃3個LED杜邦接口接在Arduino的8、9、10接口上。
步驟2:變量初始化
首先,要將所有在這個程序中需要用到的變量先聲明好。這里我們需要聲明的分別有按鍵接口、LED燈接口、保存關卡數組LedA、保存玩家輸入答案用數組UserLed、一個專門記錄目前關卡數的變量Level,以及通往下一關的布爾變量nextL。程序如下。
步驟3:程序初始定義
在游戲開始之前,程序中與硬件溝通相關的指令,都需在setup()函數中完成預先聲明。在這里我們要聲明輸入輸出接口、隨機種子、開始使用串口溝通的指令。程序如下。
步驟4:設置關卡題目
在游戲開始之前,我們必須先將游戲關卡新題目準備好。為了不讓主程序過于冗長,我們可以將設置關卡題目功能寫進restartLeds()函數中,這樣,每一個游戲回合結束后調用1次即可。該函數需要通過隨機種子運算,運算結果運用循環一一存儲到關卡數組中。程序如下。
步驟5:闖關結果燈號函數
我們讓LED燈會顯示出不同的狀態,用來表示玩家的闖關結果。當玩家闖關成功,LED燈顯示為流水燈;當玩家闖關失敗,3盞LED燈同時閃爍。為了表示這個狀態,我們需要設計2組函數,分別表示闖關成功和失敗。程序如下。
范例程序僅供參考,你可以發揮自己的創意,讓LED燈顯示不同的狀態。
步驟6:按鍵偵測函數
我們還需要設計一個函數讓按鍵和相應顏色的LED燈對應起來。程序如下。
步驟7:顯示關卡題目函數
在步驟4中,我們已經把每一關的題目函數設置好,但并沒有用LED燈顯示出來。在這一步,我們需要設計一個函數,用LED燈顯示步驟4的題目。程序如下。
步驟8:主程序
聲明完所有的函數之后,就可以開始設計主程序。由于游戲需要重復執行,所以整個主程序需要寫在loop()函數中。主程序分為2個部分:關卡判斷和答案判斷,其中,答案判斷程序嵌套在關卡判斷的While語句中。
·關卡判斷。主程序需要判斷玩家是否通關,它判斷2個變量:Level和nextL。Level變量是確認玩家是否通過全部關卡,當所處關卡不小于總關卡數,即處于最高關卡時,有可能闖關成功,否則繼續進入游戲;布爾變量nextL記錄玩家是否通關,若為false,代表闖關失敗。
只有在布爾變量nextL為true,且所處關卡不小于總關卡數時,程序才會調用winnerDance()函數發出表示勝利的流水燈。
·答案判斷。定義一個新的局部變量ubc,用來計算玩家按鍵次數。同時調用w4press()按鍵偵測函數,將其返回值保存至userLED數組中,并核對玩家記錄數組userLED和題目數組LedA中的內容是否一致。若不一致,將nextL設為false,闖關失敗,并將ubc變量改為低于目前關卡數的Level變量跳出循環結束判斷。程序如下。
結構設計
完成“跟我一起做”游戲機功能的實現之后,我們還需要為游戲機制作一個外殼,以擁有更好的游戲體驗。
步驟1:切割1塊10cm×13cm長方形紙板和1塊10cm×10cm紙板,將它們垂直粘貼起來,作為游戲機的底板和背板。
步驟2:用藍泥膠將Arduino板、LED模塊、按鍵模塊粘貼到紙板上,并用束線帶將線纜捆扎起來。
步驟3:用紙板制作游戲機的側面和頂部。注意留出Arduino板的數據接口和電源接口。
步驟4:裁出一段長方形彩色卡紙,在按鍵和LED燈的對應處挖出圓形窗口。將彩色卡紙粘貼在游戲機的正面。最后粘貼上裝飾貼紙,“跟我一起做”游戲機就完成了。連上電源線,玩起游戲機啦!