没有 FC 红白机,我用 esp8266 徒手造一个玩游戏!

2018-10-05 17:24:58 +08:00
 cr4fun

在 esp8266 上面开发一款 chrome 浏览器离线时可玩的那款恐龙跳仙人掌的游戏。

原型

游戏的原型是 chrome 浏览器在离线时呈现的小恐龙跳仙人掌的游戏

视频演示地址: https://raw.githubusercontent.com/OpensourceBooks/chrome_offline_game_on_esp8266/master/demo.mp4


制作过程

所需的元器件:

  1. NodeMCU ( esp8266 芯片、4M 内存)
  2. 12864 oled ( ssd1306 驱动)
  3. 大按键按钮 (低电平触发)
  4. 杜邦线若干(母对母)

组装的效果图:

使用 excel 表格,制作游戏的像素图案

  1. 使用 excel 表格,绘制恐龙和仙人掌

  2. 用 1 和 0 进行填充,保存为 csv 文件,并用文本编辑器打开

  3. 写到代码里

    player = {}
    player["x"] = 10
    player["y"] = 44
    player["pixel"] = [
            (0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0),
            (0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1),
            (0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1),
            (0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1),
            (0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1),
            (0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0),
            (0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0),
            (0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0),
            (1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0),
            (1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0),
            (1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0),
            (1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0),
            (1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0),
            (0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0),
            (0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0),
            (0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0),
            (0,0,0,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0),
            (0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0),
            (0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
            (0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0)
        ]
    

  4. 循环像素,显示小恐龙:

    pixels = player["pixel"]
    
        if(status["is_jump"]):
            player["y"]-=3
            if(player["y"]<15):
                status["is_jump"]=False
        else:
            player["y"]+=3
            if(player["y"]>=43):
                player["y"]=43
                status["is_jumpfinish"]=True
    
        for i in range(0,len(pixels)):
            for ii in range(0,len(pixels[i])):
                oled.pixel(player["x"]+ii,player["y"]+i,pixels[i][ii])
    

这里提供一个绘制好的 excel 文件 https://raw.githubusercontent.com/OpensourceBooks/chrome_offline_game_on_esp8266/master/game.xls

最后,代码全部在本仓库里。项目地址 https://github.com/OpensourceBooks/chrome_offline_game_on_esp8266

视频演示地址: https://raw.githubusercontent.com/OpensourceBooks/chrome_offline_game_on_esp8266/master/demo.mp4

7582 次点击
所在节点    分享创造
31 条回复
delectate
2018-10-05 18:15:01 +08:00
楼主很厉害,手动点赞。
carlclone
2018-10-05 18:17:22 +08:00
666
des
2018-10-05 18:17:44 +08:00
老哥,不需要 excel 啊。
保存成 bmp,直接读啊
yuelang85
2018-10-05 18:33:14 +08:00
相当不错,很有启发意义
isnowify
2018-10-05 18:36:32 +08:00
厉害!!
iwtbauh
2018-10-05 19:32:01 +08:00
纠正一个概念问题

电子表格 != excel
同理
演示文稿,幻灯片 != ppt
pityhero233
2018-10-05 19:58:10 +08:00
@iwtbauh 对啊对啊,看到楼主在用开源电子表格了还叫 excel 很无奈╮(╯_╰)╭
diggerdu
2018-10-05 20:05:49 +08:00
@pityhero233 习惯问题 都懂就行
iwj
2018-10-05 20:13:00 +08:00
帅呆了,给你点个赞!
mobi
2018-10-05 21:10:55 +08:00
看演示视频感觉刷新率有点低,建议不要用 python 写,我之前用 arduino 写的 fps 也有 60,也有见过别人 fps 能到 150 的
Sukizen
2018-10-05 21:16:49 +08:00
看演示视频真的好捉急,老是 game over
circleee
2018-10-05 21:27:49 +08:00
CEBBCAT
2018-10-05 21:45:39 +08:00
@mobi #10 有 Github 地址吗?
abmin521
2018-10-05 22:02:39 +08:00
不错不错 曾被同款 OLED 烧到手
mobi
2018-10-05 22:11:51 +08:00
CEBBCAT
2018-10-05 22:13:42 +08:00
@mobi 非常感谢
t123yh
2018-10-05 22:16:46 +08:00
@abmin521 OLED 是怎么烧到手的
fengc
2018-10-05 22:55:25 +08:00
哇 66666
就是视频老是 GAME OVER 有点着急 QUQ ~
brotherlegend
2018-10-06 00:03:15 +08:00
一直想买 8266 来玩,但淘宝上面好多质量不行的,楼主推荐个连接
but0n
2018-10-06 01:47:20 +08:00
还有这种取模操作 学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/495048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX