数智资源网
首页 首页 物联网 智能交通 查看内容

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

木马童年 2020-10-8 11:00 25 0

01 小游戏 Run Tiny 在电子森林推文700 个字节的代码在 ATtiny10 里跑一个游戏介绍了一个开源小游戏 RunTiny. 用了: 一个 AVR 单片机 ATtiny10 微控制器(只有 6 个脚,Digikey 上 0.3 美元一颗) 一个 128*32 ...

01 小游戏 Run Tiny

在电子森林推文700 个字节的代码在 ATtiny10 里跑一个游戏[1]介绍了一个开源小游戏 RunTiny[2].

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

用了:

  • 一个 AVR 单片机 ATtiny10 微控制器(只有 6 个脚,Digikey 上 0.3 美元一颗)

  • 一个 128*32 的 OLED 显示屏

  • 一个按键

  • 一个电池 - 3.3V~4.5V 都可以,可以用 1S 150mAh 的 Lipo,乃至一颗 CR2032 的纽扣电池

小小的单片机 ATtiny10 只有 6 个脚:

  • 1 个电源

  • 1 个地

  • 1 个 Reset

  • 3 个可用的 I/O:

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

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

    • PB2: 按键(INT0)

原理图长这样(在面包板上就可以实现,5 块钱打块板也可以啊):

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

▲ 极简的电路图

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

▲ 面包板上搭建的电路

代码也超级简单,为了能够塞到 1KB 的 Flash 存储器里面,作者做了优化,用汇编语言写成,最终的代码只有 778 个字节,不仅实现了游戏的功能,还能处理微控制器的 I/O 以及显示的通信

是不是很酷?在 Github 上有开源的资源。[2]

02 拆弹专家

“到底应该是先剪短绿色电线?还是红色的呢?”,这也许是很多动作片中的扮演大英雄的主人公在面对能够拯救百万人性命的拆弹时刻经常要说的台词。

下面这个电子游戏就是带有两个倒计时七段数码管,并且有四种不同颜色电线需要你将其按顺序移开来阻止炸弹爆炸的电路原理图。

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

▲ 拆炸弹电子游戏电路图

原理图中的器件参数可以从网络上下载相关的说明。[3]如果使用 PCB 来制作相应电路可以做到非常小巧精致,不过在面包板上 DIY 这个游戏电路则更有手感。

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

▲ 在面包板上搭建的电路游戏

电路上电后,数码管显示“S1”,此时需要将四根不同颜色线(红、蓝、绿、白)接入电路,然后按动按钮”K1”,游戏便开始了,数码管显示 15 秒的倒计时。单片机程序自动随机设定四根线移除结果:触发炸弹、加快计时速度、解除炸弹以及无结果。

电路中 16F88 单片机程序BGame.hex[3]也可以从网站下载。

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

▲ 视频游戏控制板电路原理图

03 微型直升飞机

下面是一款基于 ATTiny3 的俄罗斯方块游戏,它是由Owen 在 2011 年[4]开发的电子游戏,被称为 TinyCopter,其中 LCD 是 Nokia3310 手机液晶屏幕。它模拟在 Apple-II 电脑上一款电脑老游戏,使用空格键来控制直升飞机起飞来穿越崎岖的通道。

为了能够在 1k 字节的 FLASH, 64 字节 RAM 中实现这款小游戏,作者使用汇编语言,用尽了单片机内每一位可用的空间。

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

▲ 俄罗斯方块游戏

也许汇编语言是很多程序员的噩梦,但如果开发时间充裕,Owen 愿意永远使用汇编语言。它可以让程序员把单片机按倒在地上使劲的摩擦,榨出所有可用的资源。

04 太空入侵者

如果前面的单片机电子游戏机只能在微小液晶显示器上玩,不太过瘾,那么下面这款基于 ATMEGA328 的 8 位单片机的Hackvision[5]则可以直接利用它的 IO 口来产生 NTSC(或者 PAL)电视信号来驱动大屏幕电视机来显示游戏画面。有两条 IO 口组成的 2bitAD 所产生的音效也很神奇。

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

▲ Hackvision 游戏板

向 Arduino 一样,这款电路设计中的单片机可以让你通过它的 BootLoader 将你自己开发的程序进行上载。利用单片机额外的外设资源可以增加更多的游戏控制杆。

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

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

▲ 太空入侵者游戏

这款 Hackvision 相关的硬件开发和软件编程[6]可以在网上找到相应的开发资源和编程指导资料。

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

▲ Hackvision 硬件电路设计

参考资料

[1]700 个字节的代码在 ATtiny10 里跑一个游戏:https://mp.weixin.qq.com/s/gcqykDVyC8Vx_yztekMNSQ

[2]开源小游戏 RunTiny:https://github.com/ridoluc/RunTiny

[3]原理图中的器件参数可以从网络上下载相关的说明。: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]硬件开发和软件编程:https://easyeda.com/tomatos/hackvision
单片机 电子游戏 汇编语言 程序员 电视机
0
为您推荐
纯正商业级应用-微信小程序开发实战教程(附源码)

纯正商业级应用-微信小程序开发实战教程(

纯正商业级应用-微信小程序开发实战(附源码)——更多资源,课程更新在 多智时代 duoz…...

SpringCloud Finchley三版本微服务实战,网盘视频教程下载

SpringCloud Finchley三版本微服务实战,网

课程介绍:微服务架构已是当下最热门的话题,许多公司都在从传统架构系统向微服务转化…...

selenium3+python3+unittest自动化测试,自动化测试视频教程下载

selenium3+python3+unittest自动化测试,自

课程介绍:自动化测试视频教程 selenium3+python3+unittest自动化测试,2018年10月Sele…...

最新最全面的Java接口开发与自动化测试课程,视频教程下载

最新最全面的Java接口开发与自动化测试课程

课程介绍:本课程由BAT测试老司机带你学习Java接口自动化测试,掌握HttpClient和TestN…...

Python Flask构建可扩展的RESTful API,视频教程下载

Python Flask构建可扩展的RESTful API,视

课程介绍:前后端分离大势所趋,本课程将构建一套优秀的RESTful API,可以适配小程序…...

Python框架Flask系列2——全栈,视频教程下载

Python框架Flask系列2——全栈,视频教程下

课程介绍:本套课程的目标是从零基础开始,使用Flask框架开发企业级的项目。课程中不…...