?

“跟我一起做”游戲機

2018-12-03 02:55科技學堂
中國科技教育 2018年2期
關鍵詞:關卡游戲機按鍵

科技學堂

概述

“跟我一起做”是一款記憶類游戲機,由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燈的對應處挖出圓形窗口。將彩色卡紙粘貼在游戲機的正面。最后粘貼上裝飾貼紙,“跟我一起做”游戲機就完成了。連上電源線,玩起游戲機啦!

猜你喜歡
關卡游戲機按鍵
電塔島歷險
非觸勿動 秒治鍵盤誤觸
瘋狂冒險島
任天堂確認Wii U將停產
未來的筆
小偵探
其實真的很簡單教你輕松關閉WP8.1手機按鍵燈
計算器
時空穿梭
街機也能DIY
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合