【React】重製懷舊遊戲系列-紅白機打磚塊

更新 發佈閱讀 13 分鐘
raw-image

前言

嗨,各位懷舊遊戲愛好者!今天要跟大家分享一個有趣的主題:如何利用React和Pixi.js這兩大神兵利器,重塑我們那個年代的經典紅白機打磚塊遊戲!

先跟大家簡單科普一下,React是一個超級火爆的前端框架,能讓我們輕鬆創建可重用的UI組件,組件間的狀態管理也相當方便。而Pixi.js則是一個強大的2D繪圖引擎,讓我們能夠輕鬆繪製出各種炫麗的遊戲畫面。有了這兩大利器,重塑打磚塊遊戲簡直就是小菜一碟!

接下來,我們來談談如何運用React和Pixi.js的特性來打造經典打磚塊遊戲。首先,利用React組件化的特點,可以將遊戲中的元素如球、磚塊和擋板等,封裝成獨立的組件。這樣一來,遊戲開發和維護變得更加方便。再者,可以利用Pixi.js繪製出各種酷炫的背景、動畫和特效,讓打磚塊遊戲的視覺表現更上一層樓。最重要的是,這兩個技術都支持跨平台,讓遊戲能在不同的設備上暢行無阻。

使用React和Pixi.js重製紅白機打磚塊遊戲,不僅讓我們重溫那段美好的時光,更是將懷舊與技術完美結合的絕佳範例。我們可以利用這兩大神器的優點,創建出更加精美、易維護的打磚塊遊戲,讓這個經典遊戲在現代科技的加持下繼續發光發熱。讓大家一起回到那個紅白機的時代,用現代技術重溫經典,創造出更多美好的回憶!

開始前先說明我們重製的紅白機打磚塊會是閹割版,尚有許多功能未實作(文章後條列)這些功能希望交由大家繼續加強,以下開始本次教學。

特別說明:紅白機版本的打磚塊是由TAITO公司於1986年,以「打磚塊」遊戲為基礎所推出的電玩遊戲



企劃相關

在開始前,需要先收集紅白機打磚塊遊戲的相關資源,從企劃開始,以下是請ChatGPT給的打磚塊遊戲玩法介紹:

紅白機打磚塊遊戲,又稱 “Arkanoid”,是一款充滿樂趣和挑戰性的復古遊戲,為各年齡層的玩家帶來無限的娛樂。自1986年由任天堂推出以來,這款遊戲已經吸引了數百萬玩家的喜愛。遊戲的玩法簡單但具有挑戰性,主要目的是用移動的橫條來控制彈跳的球,使球撞擊並消除屏幕上的磚塊。以下將對遊戲的玩法進行更詳細的介紹。

  1. 玩家控制一個底部的橫條(稱為擊球板),可以左右移動。遊戲中,球從擊球板上彈起,並朝向磚塊飛去。玩家需要隨時注意擊球板的位置,並確保球不會掉落到屏幕底部。
  2. 遊戲的目標是消除所有屏幕上的磚塊。磚塊分為多個顏色,每個顏色代表不同的分數。當球撞到磚塊時,磚塊會消失,並為玩家加分。根據磚塊的顏色和位置,不同磚塊所得分數可能不同。玩家需要合理利用球的移動方向和速度,以消除更多的磚塊。
  3. 在遊戲過程中,玩家需確保球不會掉落到屏幕底部。如果球掉落,玩家將失去一個生命。遊戲開始時,玩家通常有三個生命。當所有生命都用完時,遊戲結束。
  4. 遊戲的操作方式主要依賴於玩家對擊球板的控制。根據球的移動方向和速度,玩家需要及時調整擊球板的位置,使球得以繼續彈跳並撞擊磚塊。此外,根據擊球板與球的碰撞角度,球的移動方向可能會發生變化。因此,玩家需具備一定的技巧和判斷力,以達到最佳的撞擊效果。
  5. 在某些關卡中,遊戲中會出現特殊的磚塊和道具。這些特殊磚塊可能需要多次撞擊才能消除,或者會有額外的特效,如變換顏色、反彈球等。而道具則會在磚塊被消除後掉落,玩家需使擊球板接住它們以獲得額外的能力或獎勵。例如,有些道具可以讓擊球板變長、讓球速度變快、或讓球穿過磚塊而不反彈等。
  6. 當玩家成功消除所有磚塊後,遊戲將進入下一個關卡。隨著關卡的提升,遊戲難度也會逐步增加。磚塊的排列可能更為複雜,球的移動速度可能更快,而特殊磚塊和道具也可能變得更具挑戰性。
  7. 遊戲中,玩家可以不斷挑戰自己的最高分數,並與其他玩家一較高下。高分榜將記錄玩家在遊戲中取得的最高分數,讓玩家能夠看到自己的進步和成就。

總之,紅白機打磚塊遊戲是一款充滿趣味和挑戰性的經典遊戲,適合各年齡層的玩家。


遊戲關卡

紅白機打磚塊遊戲一共有36關,可以參考以下Youtube影片來編輯關卡:

磚塊顏色與磚塊分數

  • 白色磚塊 50分
  • 橙色磚塊 60分
  • 淡藍色磚塊 70分
  • 綠色磚塊 80分
  • 紅色磚塊 90分
  • 藍色磚塊 100分
  • 粉色磚塊 110分
  • 黃色磚塊 120分
  • 灰色磚塊 200分

加隻規則

  • 2萬分加1隻,6萬分加1隻,之後每增加6萬分加1隻



美術資源

說到懷舊遊戲美術就立馬想到The Spriters Resource這個網站,上面收集了大部分懷舊遊戲圖片資料,可以使用在個人與非商業用途上,在網站上可以找到紅白機打磚塊遊戲的美術資源如下:





音效資源

Video Game Music網站上收集了大部分懷舊遊戲的音樂與音效,在網站上也可以找到紅白機打磚塊遊戲的音效相關資源:



安裝軟體

請先安裝以下軟體:

  • Node.js


  • Visual Studio Code



建立專案

安裝完Node.js後開啟Node.js command prompt進入命令模式,輸入以下指令建立arkanoid_pixi專案:

npx create-react-app arkanoid_pixi --template typescript
cd arkanoid_pixi
npm install [email protected]
npm install [email protected] --save
npm install --save @types/howler
npm install --save react-howler
npm install react-device-detect --save



Github下載原始碼

至以下Github下載打磚塊原始碼,解壓縮後覆蓋arkanoid_pixi目錄(上一步驟建立的目錄)。

覆蓋完畢在arkanoid_pixi目錄上按滑鼠右鍵,選”用CODE開啟”,將游標移至TERMINAL命令列視窗並輸入npm start並下按Enter。

raw-image

一會後會自動使用預設的瀏覽器開啟打磚塊遊戲如下:

raw-image



目錄與檔案說明

public    <DIR>
fonts <DIR> 字形檔案
images <DIR> 圖片檔案
sounds <DIR> 音效檔案

src <DIR>
Arkanoid <DIR>
Background.ts 背景物件
Ball.ts 球物件
BasicCore.ts 基本核心
Board.ts 板子物件
Brick.ts 磚塊物件
GameData.ts 遊戲資料
GameMain.ts 主程式物件
GameRound.ts 關卡物件
King.ts 王物件
LoaderResource.ts 載入資源
Round.ts 遊戲關卡
Sound.ts 音效物件
Transitions.ts 過場物件
Arkanoid.css 打磚塊css
Arkanoid.tsx 打磚塊tsx
index.tsx



架構與物件說明

raw-image


程式相關

程式碼內以有詳細註解,以下只針對需要特別講解的部分在作重點說明:

如何將遊戲拉伸到全畫面 — index.tsx

只要改變元件的screen_mode參數就可以設定遊戲畫面要以正常比例顯示或拉伸到全畫面:

  • 設定正常比例顯示遊戲畫面
<Arkanoid width_base={1024} height_base={896} screen_mode={0}/>
  • 設定將遊戲拉伸到全畫面
<Arkanoid width_base={1024} height_base={896} screen_mode={1}/>

關於遊戲關卡 — Round.ts

遊戲關卡由11x18二維陣列組成:

// 關卡-1.
public static sRound1 = [
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[9,9,9,9,9,9,9,9,9,9,9],
[5,5,5,5,5,5,5,5,5,5,5],
[6,6,6,6,6,6,6,6,6,6,6],
[8,8,8,8,8,8,8,8,8,8,8],
[3,3,3,3,3,3,3,3,3,3,3],
[1,1,1,1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
]

陣列內數字分別代表以下磚塊顏色:

  • 【0】空
  • 【1】白色
  • 【2】橙色
  • 【3】淡藍
  • 【4】綠色
  • 【5】紅色
  • 【6】藍色
  • 【7】粉色
  • 【8】黃色
  • 【9】灰色
  • 【10】金色

磚塊的生命值與消滅後得分設定在Brick.ts檔案內

// 磚塊分數表.
private static sScoreTable = [80,70,60,50,90,100,110,120,200,9999];
// 磚塊生命表.
private static sLifeTable = [1,1,1,1,1,1,1,1,2,9999];



未實作功能

  • 片頭選單
  • 特殊道具
  • 敵人
  • 支援手機、平板輸入控制


測試影片




線上玩

支援平台

  • 暫時只支援桌上電腦與筆電操作
  • 預設開啟自動玩模式,如果要改為手動玩請鍵盤按下A切換為手動玩

功能按鍵

  • F鍵:FPS開關
  • D鍵:除錯模式開關
  • S鍵:音效開關
  • R鍵:自爆
  • A鍵:自動玩開關


試玩網址


後記

當我還是個小孩時,最喜歡的事情就是玩那些老舊的電子遊戲,現在也一樣愛玩。所以我一直想要抽出時間來重製這些經典遊戲。透過重製,我不僅可以重溫小時候玩過的遊戲,還可以練習新的程式語言,讓這些懷舊遊戲再次復活。

當我聽到”懷舊”這個詞時,就能夠感受到它背後的意義:回憶起我們曾經擁有過的、珍貴的、獨一無二的時光。當然,回到過去並不總是一件好事,但是回想起那些我們喜歡的遊戲和活動,往往可以讓我們的心情變得更加愉悅。

不僅如此,透過重製懷舊遊戲,我們還可以學習和練習新的程式語言和工具。如果想要實現一個懷舊遊戲的新版本,那麼就需要運用現代技術和工具來達成這個目標。這樣做不僅可以學到新的技能,還可以讓我將這些新技能應用到未來的專案中。

當然,最令人期待的還是重新體驗那些小時候玩過的遊戲。我們曾經花費無數的時間在這些遊戲上,當時那些遊戲對我們來說是如此重要。現在,透過重製這些遊戲,可以讓這些美好回憶再次蔚然成風。

希望大家也能喜歡這個系列,如果有你喜歡的懷舊遊戲,歡迎在留言分享,也許下次重製的主題就是它了!我們下次再見!


留言
avatar-img
留言分享你的想法!
avatar-img
無限升級的沙龍
5會員
20內容數
分享個人創客作品
無限升級的沙龍的其他內容
2024/04/30
這篇文章介紹瞭如何使用Raspberry Pi PICO等材料製作自己的GAME&WATCH大金剛掌機,以及接線圖、程式碼下載和安裝遊戲的教學,並且分享了製作過程中的一些心得和回憶。如果您對童年的遊戲回憶感興趣,這篇文章值得一讀。
Thumbnail
2024/04/30
這篇文章介紹瞭如何使用Raspberry Pi PICO等材料製作自己的GAME&WATCH大金剛掌機,以及接線圖、程式碼下載和安裝遊戲的教學,並且分享了製作過程中的一些心得和回憶。如果您對童年的遊戲回憶感興趣,這篇文章值得一讀。
Thumbnail
2023/06/23
開通ChatGPT PLUS 話說ChatGPT+SGDK能不能蹦出MD(SEGA Mega Drive)新遊戲呢?這幾天開通了ChatGPT PLUS想說來試試使用ChatGPT作款能在MD主機上玩的小遊戲,順便記錄一下製作這款遊戲的過程。。。
Thumbnail
2023/06/23
開通ChatGPT PLUS 話說ChatGPT+SGDK能不能蹦出MD(SEGA Mega Drive)新遊戲呢?這幾天開通了ChatGPT PLUS想說來試試使用ChatGPT作款能在MD主機上玩的小遊戲,順便記錄一下製作這款遊戲的過程。。。
Thumbnail
2023/06/03
Hello!大家好我是茄諾,今天要來幫自主研發的掌機TBoy寫款可以連線對戰的遊戲,不知道TBoy的朋友可以連至以下網址看看: 因為要連線對戰,所以需要準備兩台TBoy掌機,請參考以上文章製作;接下來要挑選適合連線對戰的遊戲,個人偏愛Pong,這款由Atari開發的投幣式大型電玩對戰遊戲非常適合與家
Thumbnail
2023/06/03
Hello!大家好我是茄諾,今天要來幫自主研發的掌機TBoy寫款可以連線對戰的遊戲,不知道TBoy的朋友可以連至以下網址看看: 因為要連線對戰,所以需要準備兩台TBoy掌機,請參考以上文章製作;接下來要挑選適合連線對戰的遊戲,個人偏愛Pong,這款由Atari開發的投幣式大型電玩對戰遊戲非常適合與家
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
在全球疫情嚴峻之時,Whatever發表一款APP「RakugakiAR」(中譯:塗鴉AR),不論塗鴉在筆記本或白板或任何地方,掃描後就能讓塗鴉注入生命力,也吸引《海賊王》作者尾田榮一郎分享,享受為塗鴉注入生命的效果。
Thumbnail
在全球疫情嚴峻之時,Whatever發表一款APP「RakugakiAR」(中譯:塗鴉AR),不論塗鴉在筆記本或白板或任何地方,掃描後就能讓塗鴉注入生命力,也吸引《海賊王》作者尾田榮一郎分享,享受為塗鴉注入生命的效果。
Thumbnail
Hello!大家好我是茄諾,今天要來幫自主研發的掌機TBoy寫款可以連線對戰的遊戲,不知道TBoy的朋友可以連至以下網址看看: 因為要連線對戰,所以需要準備兩台TBoy掌機,請參考以上文章製作;接下來要挑選適合連線對戰的遊戲,個人偏愛Pong,這款由Atari開發的投幣式大型電玩對戰遊戲非常適合與家
Thumbnail
Hello!大家好我是茄諾,今天要來幫自主研發的掌機TBoy寫款可以連線對戰的遊戲,不知道TBoy的朋友可以連至以下網址看看: 因為要連線對戰,所以需要準備兩台TBoy掌機,請參考以上文章製作;接下來要挑選適合連線對戰的遊戲,個人偏愛Pong,這款由Atari開發的投幣式大型電玩對戰遊戲非常適合與家
Thumbnail
前言 嗨,各位懷舊遊戲愛好者!今天要跟大家分享一個有趣的主題:如何利用React和Pixi.js這兩大神兵利器,重塑我們那個年代的經典紅白機打磚塊遊戲! 先跟大家簡單科普一下,React是一個超級火爆的前端框架,能讓我們輕鬆創建可重用的UI組件,組件間的狀態管理也相當方便。。。
Thumbnail
前言 嗨,各位懷舊遊戲愛好者!今天要跟大家分享一個有趣的主題:如何利用React和Pixi.js這兩大神兵利器,重塑我們那個年代的經典紅白機打磚塊遊戲! 先跟大家簡單科普一下,React是一個超級火爆的前端框架,能讓我們輕鬆創建可重用的UI組件,組件間的狀態管理也相當方便。。。
Thumbnail
80年代是個迷人又樸真的世代 乘載著青春熱血與各式各樣大大小小的夢想 沒有手機的年代. 唯一能聯繫感情的方式 就是好友相聚在一起的冒險與遊戲
Thumbnail
80年代是個迷人又樸真的世代 乘載著青春熱血與各式各樣大大小小的夢想 沒有手機的年代. 唯一能聯繫感情的方式 就是好友相聚在一起的冒險與遊戲
Thumbnail
自從鄰居搶頭香買了全社區第一台的最新款超級任天堂SFC之後,姐姐就很少陪我玩舊款紅白機遊戲了,放學後我們常常藉機往鄰居家跑,社區裏的小朋友們除了玩遊戲機之外,有時我們也會聚在一起看小甜甜和少女漫畫,隨著年齡漸長與學業壓力加速了生活重心的轉移,因此我也漸漸淡出了紅白機遊戲的娛樂生活。
Thumbnail
自從鄰居搶頭香買了全社區第一台的最新款超級任天堂SFC之後,姐姐就很少陪我玩舊款紅白機遊戲了,放學後我們常常藉機往鄰居家跑,社區裏的小朋友們除了玩遊戲機之外,有時我們也會聚在一起看小甜甜和少女漫畫,隨著年齡漸長與學業壓力加速了生活重心的轉移,因此我也漸漸淡出了紅白機遊戲的娛樂生活。
Thumbnail
1點選右下皮卡丘的圖示 這邊有木仁老師預先寫好的程式內容 2點選控制 3拖拉重複無限次的積木程式 4在點選動作 5拖拉(定位到隨機位置)進去 6將隨機跟改為鼠標 (鼠標意思就是滑鼠的游標,也就是實際滑鼠的位置方位) 7再給他組合上去就初步完成了!!!
Thumbnail
1點選右下皮卡丘的圖示 這邊有木仁老師預先寫好的程式內容 2點選控制 3拖拉重複無限次的積木程式 4在點選動作 5拖拉(定位到隨機位置)進去 6將隨機跟改為鼠標 (鼠標意思就是滑鼠的游標,也就是實際滑鼠的位置方位) 7再給他組合上去就初步完成了!!!
Thumbnail
[懷舊遊戲週報 2021/10-2] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《王國之心》系列登上 Switch 平台 ‧Atari 2600、《熱舞革命》微型機台 ‧《莎木》動畫版預告發布...等其他資訊
Thumbnail
[懷舊遊戲週報 2021/10-2] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《王國之心》系列登上 Switch 平台 ‧Atari 2600、《熱舞革命》微型機台 ‧《莎木》動畫版預告發布...等其他資訊
Thumbnail
LINE: Pixar Tower 說到打發時間的手機遊戲,小編一定要推這一款由Line遊戲推出的Pixar Tower。與迪士尼皮克斯動畫聯名,巴斯光年、胡迪、毛怪、大眼仔等經典人氣角色都被改造成超可愛tsumtsum風格,喜歡皮克斯的角色及電影的朋友千萬不能錯過。這款遊戲的遊玩方式為串
Thumbnail
LINE: Pixar Tower 說到打發時間的手機遊戲,小編一定要推這一款由Line遊戲推出的Pixar Tower。與迪士尼皮克斯動畫聯名,巴斯光年、胡迪、毛怪、大眼仔等經典人氣角色都被改造成超可愛tsumtsum風格,喜歡皮克斯的角色及電影的朋友千萬不能錯過。這款遊戲的遊玩方式為串
Thumbnail
[懷舊遊戲週報 2020/10-5] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《快打旋風II》與《洛克人》音源取樣合成器 ‧《龍穴歷險記》、《爆破彗星》微縮遊戲機台 ‧《九龍風水傳》續作啟動開發與募資...等其他資訊
Thumbnail
[懷舊遊戲週報 2020/10-5] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《快打旋風II》與《洛克人》音源取樣合成器 ‧《龍穴歷險記》、《爆破彗星》微縮遊戲機台 ‧《九龍風水傳》續作啟動開發與募資...等其他資訊
Thumbnail
[懷舊遊戲週報 2020/10-4] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《同級生》將推出重製版 ‧ATARI 發表「Mini PONG Jr.」 ‧PC Engine 系列相容機「Analogue Duo」發表...等其他資訊
Thumbnail
[懷舊遊戲週報 2020/10-4] 懷舊遊戲週報收集每週與懷舊遊戲相關的新訊,預定每週五出刊。 本週主要的消息包含: ‧《同級生》將推出重製版 ‧ATARI 發表「Mini PONG Jr.」 ‧PC Engine 系列相容機「Analogue Duo」發表...等其他資訊
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News