• 正文
    • 參考資料
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

工程師暗藏的游戲心,不如自己制作一款?

2020/10/08
169
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

01 小游戲 Run Tiny

在電子森林推文?700 個(gè)字節(jié)的代碼在 ATtiny10 里跑一個(gè)游戲[1]?介紹了一個(gè)?開(kāi)源小游戲 RunTiny[2]?.

用了:

小小的單片機(jī) ATtiny10 只有 6 個(gè)腳:

  • 1 個(gè)電源

  • 1 個(gè)地

  • 1 個(gè) Reset

  • 3 個(gè)可用的 I/O:

    • PB0: 用于連接 OLED 的 I2C 的 SDA

    • PB1: 用于連接 OLED 的 I2C 的 SCL

    • PB2: 按鍵(INT0)

?

原理圖長(zhǎng)這樣(在面包板上就可以實(shí)現(xiàn),5 塊錢打塊板也可以?。?/p>

▲ 極簡(jiǎn)的電路圖

▲ 面包板上搭建的電路

代碼也超級(jí)簡(jiǎn)單,為了能夠塞到 1KB 的 Flash 存儲(chǔ)器里面,作者做了優(yōu)化,用匯編語(yǔ)言寫(xiě)成,最終的代碼只有 778 個(gè)字節(jié),不僅實(shí)現(xiàn)了游戲的功能,還能處理微控制器的 I/O 以及顯示的通信

?

是不是很酷?在 Github 上有開(kāi)源的資源。[2]

02 拆彈專家

“到底應(yīng)該是先剪短綠色電線?還是紅色的呢?”,這也許是很多動(dòng)作片中的扮演大英雄的主人公在面對(duì)能夠拯救百萬(wàn)人性命的拆彈時(shí)刻經(jīng)常要說(shuō)的臺(tái)詞。

?

下面這個(gè)電子游戲就是帶有兩個(gè)倒計(jì)時(shí)七段數(shù)碼管,并且有四種不同顏色電線需要你將其按順序移開(kāi)來(lái)阻止炸彈爆炸的電路原理圖。

▲ 拆炸彈電子游戲電路圖

原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說(shuō)明。[3]?如果使用 PCB 來(lái)制作相應(yīng)電路可以做到非常小巧精致,不過(guò)在面包板上 DIY 這個(gè)游戲電路則更有手感。

▲ 在面包板上搭建的電路游戲

電路上電后,數(shù)碼管顯示“S1”,此時(shí)需要將四根不同顏色線(紅、藍(lán)、綠、白)接入電路,然后按動(dòng)按鈕”K1”,游戲便開(kāi)始了,數(shù)碼管顯示 15 秒的倒計(jì)時(shí)。單片機(jī)程序自動(dòng)隨機(jī)設(shè)定四根線移除結(jié)果:觸發(fā)炸彈、加快計(jì)時(shí)速度、解除炸彈以及無(wú)結(jié)果。

?

電路中 16F88 單片機(jī)程序?BGame.hex[3]?也可以從網(wǎng)站下載。

▲ 視頻游戲控制板電路原理圖

03 微型直升飛機(jī)

下面是一款基于 ATTiny3 的俄羅斯方塊游戲,它是由?Owen 在 2011 年[4]?開(kāi)發(fā)的電子游戲,被稱為 TinyCopter,其中 LCD 是 Nokia3310 手機(jī)液晶屏幕。它模擬在 Apple-II 電腦上一款電腦老游戲,使用空格鍵來(lái)控制直升飛機(jī)起飛來(lái)穿越崎嶇的通道。

?

為了能夠在 1k 字節(jié)的 FLASH, 64 字節(jié) RAM 中實(shí)現(xiàn)這款小游戲,作者使用匯編語(yǔ)言,用盡了單片機(jī)內(nèi)每一位可用的空間。

▲ 俄羅斯方塊游戲

也許匯編語(yǔ)言是很多程序員的噩夢(mèng),但如果開(kāi)發(fā)時(shí)間充裕,Owen 愿意永遠(yuǎn)使用匯編語(yǔ)言。它可以讓程序員把單片機(jī)按倒在地上使勁的摩擦,榨出所有可用的資源。

04 太空入侵者

如果前面的單片機(jī)電子游戲機(jī)只能在微小液晶顯示器上玩,不太過(guò)癮,那么下面這款基于 ATMEGA328 的 8 位單片機(jī)的?Hackvision[5]?則可以直接利用它的 IO 口來(lái)產(chǎn)生 NTSC(或者 PAL)電視信號(hào)來(lái)驅(qū)動(dòng)大屏幕電視機(jī)來(lái)顯示游戲畫(huà)面。有兩條 IO 口組成的 2bitAD 所產(chǎn)生的音效也很神奇。

▲ Hackvision 游戲板

Arduino 一樣,這款電路設(shè)計(jì)中的單片機(jī)可以讓你通過(guò)它的 BootLoader 將你自己開(kāi)發(fā)的程序進(jìn)行上載。利用單片機(jī)額外的外設(shè)資源可以增加更多的游戲控制桿。

?

基于這款硬件可以玩太空入侵者,乒乓球或者小行星等游戲。

▲ 太空入侵者游戲

這款 Hackvision 相關(guān)的?硬件開(kāi)發(fā)軟件編程[6]?可以在網(wǎng)上找到相應(yīng)的開(kāi)發(fā)資源和編程指導(dǎo)資料。

▲ Hackvision 硬件電路設(shè)計(jì)

參考資料

[1]700 個(gè)字節(jié)的代碼在 ATtiny10 里跑一個(gè)游戲:?https://mp.weixin.qq.com/s/gcqykDVyC8Vx_yztekMNSQ

[2]開(kāi)源小游戲 RunTiny:?https://github.com/ridoluc/RunTiny

[3]原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說(shuō)明。:?https://www.electronics-lab.com/project/bomb-game/

[4]Owen 在 2011 年:?http://hackedgadgets.com/category/game-hacks/page/7/

[5]Hackvision:?https://nootropicdesign.com/hackvision/

[6]硬件開(kāi)發(fā)和軟件編程:?https://easyeda.com/tomatos/hackvision

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

公眾號(hào)TsinghuaJoking主筆。清華大學(xué)自動(dòng)化系教師,研究興趣范圍包括自動(dòng)控制、智能信息處理、嵌入式電子系統(tǒng)等。全國(guó)大學(xué)生智能汽車競(jìng)賽秘書(shū)處主任,技術(shù)組組長(zhǎng),網(wǎng)稱“卓大大”。