前言
DIY了幾台網路大神們開源的掌機後,想想也該是時候來弄台原創掌機回饋一下社群了,也就是說新作的這台掌機會開源,希望對有興趣製作掌機的同好有所幫助。
一開始發想的時候就把這台掌機設定在初學掌機的族群,所以想盡量簡化硬體的設計,測試了幾片MCU後最終選用了TTGO T-Display這片開發板,主要是因為這片開發板使用了強大的ESP32核心而且也已經內建一塊1.14吋ST7789V、240x135的TFT LCD,很符合這次要作的開源掌機需求,只要再加上幾個按鈕跟蜂鳴器硬體部分大致上就已經完成。
至於軟體部分,為了吸引大家有興趣來動手製作這台掌機,所以改良了大家熟知能詳的方塊遊戲,並且加強了聲光效果,希望能夠引起大家作掌機的興趣,遊戲命名為ZooCube後面會有遊戲的玩法介紹,在開始之前我們先來看看完成後的遊玩影片:
對了,總要給掌機取個簡單好記的名子,就叫他TBoy吧。。。
準備材料
- TTGO T-Display ESP32 x 1
- 輕觸開關中兩腳 x 6
- 10kΩ電阻 x 6
- 蜂鳴器 x 1
- 麵包板 x 1
- 麵包板線一盒
線路圖
按鈕(BUTTON)接線
- 【上按鈕接線】 GND — 10KΩ — GPIO2 — BUTTON — 3.3v
- 【下按鈕接線】 GND — 10KΩ — GPIO15 —BUTTON — 3.3v
- 【左按鈕接線】GND — 10KΩ — GPIO13 — BUTTON— 3.3v
- 【右按鈕接線】GND — 10KΩ — GPIO12 —BUTTON — 3.3v
- 【A按鈕接線】GND — 10KΩ — GPIO32 — BUTTON— 3.3v
- 【B按鈕接線】GND — 10KΩ — GPIO33 — BUTTON— 3.3v
蜂鳴器(BUZZER)接線
- 【音樂】GND — BUZZER — GPIO27
- 【音效】GND — BUZZER — GPIO17
請參考以上線路圖完成TBoy硬體製作。
TBoy掌機版面配置與接線參考
開發環境安裝與設定
安裝Arduino IDE
- 進入後請依照您習慣的平台下載Arduino IDE並安裝
- 安裝完畢後會在桌面看到Arduino IDE icon,點擊兩下開啟
安裝ESP32開發板驅動程式
2、開啟”開發板管理員”
3、搜尋esp32並安裝
安裝與設定遊戲開發相關函數庫
安裝TFT_eSPI
1、開啟管理程式庫
2、輸入搜尋TFT_eSPI並安裝
設定TFT_eSPI給TTGO T-Display ESP32板子用
1、找到TFT_eSPI安裝目錄,可從偏好設定內查到
2、進入偏好設定內查到的目錄後會看到libraries目錄,進入此目錄並找到TFT_eSPI目錄在進入,進入後找到User_Setup_Select.h檔案並開啟。
// 註解掉此行.
// #include <User_Setup.h>
。。。
// 將此行註解拿掉
#include <User_Setups/Setup25_TTGO_T_Display.h>
3、設定完畢後記得儲存檔案
安裝 ESP32Servo
1、進入管理程式庫搜尋ESP32Servo並安裝
Github下載ZooCube遊戲原始碼
燒錄ZooCube遊戲到TBoy掌機
- 下載後將其解壓縮並進入ZooCube目錄找到ZooCube.ino檔案並在檔案上點擊兩下,這時會開啟Arduino IDE並載入ZooCube.ino檔案
- 請先將TBoy透過USB線接上電腦,並參考以下畫面選擇開發板與其相關設定,要特別注意的是序列埠要選對與TBoy連接的COM
- 以上都確定無誤後就可以按下"上傳"按鈕,稍待程式燒錄進TBoy後就可以開始遊戲囉
ZooCube遊戲介紹
遊戲玩法
玩家需要在10x20的空間內控制由上往下掉落的的七種方塊,利用旋轉方塊功能使掉落的方塊連成橫線,啟動消除方塊,如果在20列中都無法連成橫線消除方塊,遊戲就告結束。
遊戲中每消除一列會將每列的方塊顏色作累加,一共有七種顏色的方塊,每種顏色收集滿都會發動不同效果的技能。
隨著消除方塊列的數量越多,方塊下降的速度也會隨之變快,背景也會跟著變換圖片。
按鍵說明
遊戲中
- 左右按鈕:移動慢慢掉落中的方塊
- 下按鈕:讓方塊快速掉落
- A按鈕:順時鐘旋轉方塊
- B按鈕:逆時鐘旋轉方塊
- 開始按鈕:暫停遊戲
- 選擇按鈕:選項選單
選單
遊戲畫面說明
- 遊戲區:玩家控制掉落方塊的區域。
- 本局分數:本局遊玩時所得分數,遊戲結束時如果分數比排行榜中的分數高就會記錄進排行榜。
- 本局連線數:本局的所有連線數會累加紀錄在此。
- 最大連線數:每局結束後會比對本局連線數與最大連線數並留下數字最大者。
- 下個出現方塊:遊戲區控制的方塊掉落後接續會出現的方塊。
- 方塊掉落速度:隨著遊戲進行消除的方塊越多就會讓方塊掉落的速度越快。
- 各顏色方塊收集狀態:每消除一列就會依每列中的顏色作累加,等某個顏色累加滿後就會發動技能,另外如果發現剖某個顏色開始閃爍,這就表示只要再收集小於3個同顏色方塊就會啟動技能。
PAUSE選單說明(開始按鈕)
- 每種顏色方塊收集狀態:更清楚觀看懂每種方塊顏色的累加狀況。
OPTIONS選單說明(選擇按鈕)
- 音樂開關:開關遊戲背景音樂
- 音效開關:開關遊戲音效
- 旋轉螢幕:180度旋轉遊戲螢幕
- 回主選單:回遊戲開機時的選單
- 分數排行榜: 每局結束後會將分數與此排行榜比對並留下高分者
集滿方塊發動技能說明
- 【招式1】淺藍方塊 — 從上掉落10顆淺藍方塊
- 【招式2】藍色方塊 — 由最高方塊開始往下消除三列
- 【招式3】橘色方塊 — 由下開始橫向單列往上消除三列
- 【招式4】黃色方塊 — 由下往上消除三列
- 【招式5】綠色方塊 — 由下橫向往上填空十個空格
- 【招式6】紫色方塊 — 出現大槌子讓玩家左右操控後往下掉落
- 【招式7】紅色方塊 — 出現往下掉並可射擊方塊的方塊
使用網路資源
- 遊戲圖形大部分取至THE SPRITERS RESOURCE網站,依站上的使用說明為僅 供個人項目與非商業用途
後記
創作是一個漫長且有趣的過程,也是從這東西好有趣到底是怎麼作出來的到其實也不難嘛的一個過程,這中間會經歷瘋狂找資料,到理解原理並自己作出第一個勉強能動的東西,然後繼續瘋狂找資料瞭解為什麼東西只是勉強能動,反覆這個過程直到能夠說出其實也不難嘛的時候表示你已經入門這個領域,創作也是讓我們能瞭解這個世界是怎麼運作的捷徑之一,因為瞭解越多這個世界的物理運作原理您我就能創作出越有趣的東西,這是我的第一台原創開源掌機,希望大家會喜歡。
2021/06/26 更新 — 新增PCB相關資料
- TTGO T-Display ESP32 x 1
- 輕觸開關中兩腳 x 6
- 10kΩ電阻 x 6
- 無源蜂鳴器9*5.5MM x 1
- 鋰電池充電板模組 TYPE-C USB介面充電保護二合一 x 1
- XH2.54–2P/針座/彎針/白色插件 2.54間距 x 1
- XH2.54–6P/針座/彎針/白色插件 2.54間距 x 1
- 200mAH、3.7V 聚合物鋰電池 x 1
- 滑動開關三腳二檔微型開關 x 1