爱意满满的作品展示区。
cr4fun

使用 esp8266 开发的游戏机,升级到了 v2 版本,高仿 chrome 离线小恐龙游戏!

  •  
  •   cr4fun · Oct 15, 2018 · 6096 views
    This topic created in 2768 days ago, the information mentioned may be changed or developed.

    版本 2

    这款游戏是模仿 chrome 浏览器离线时的小恐龙游戏的:

    第一个版本的恐龙、仙人掌是用循环数组逐点像素实现的,每帧显示都重新绘制一边,这种绘制的算法没有优化,因此可以看到有卡顿。

    版本 2 中,不再使用 excel 表格而是使用 pbm 格式的图片。

    如下所示,这是把游戏玩家的像素图读出来。

    with open('player.pbm', 'rb') as f:
        f.readline() # Magic number
        f.readline() # Creator comment
        f.readline() # Dimensions
        data = bytearray(f.read())
    player["buf_jump"] = framebuf.FrameBuffer(data, 20, 20, framebuf.MONO_HLSB)
    

    到需要绘制的时候,无需循环像素,而是使用内置的函数来绘制。

    oled.blit(player["buf_jump"], player["x"], player["y"])
    

    v2 版本增加了暂停,其实这很容易,就是针对 2 个按钮来使用状态机:

    def blue_click():
        if(status["is_jumpfinish"]):
            status["is_jump"]=True
            status["is_jumpfinish"]=False
        
    def red_click():
        if(status["game"]=="ready"):
            status["game"]="playing"
        elif(status["game"]=="playing"):
            status["game"]="pause"
        elif(status["game"]=="pause"):
            status["game"]="playing"
        elif(status["game"]=="gameover"):
            begin()
            status["game"]="playing"
        
    

    最后,分别看一下运行时、暂停时和游戏结束时的照片:

    进行时的界面

    暂停时的界面

    游戏结束时的界面

    演示: https://raw.githubusercontent.com/OpensourceBooks/chrome_offline_game_on_esp8266/master/demo2.mp4

    1.0 传送门 https://www.v2ex.com/t/495048#reply31

    20 replies    2019-02-25 22:54:25 +08:00
    meetnice
        1
    meetnice  
       Oct 15, 2018 via Android
    看到 esp8266 还以为你要写个网页电脑连 WiFi 玩。然后 chrome 判断没网,游戏自己就出来了。
    cr4fun
        2
    cr4fun  
    OP
       Oct 15, 2018 via iPhone
    @meetnice 哈哈,标题让你误解了。其实是把 esp8266 当作芯片做一款硬件游戏机。
    fy
        3
    fy  
       Oct 15, 2018
    因缺斯汀
    roadna
        4
    roadna  
       Oct 15, 2018 via Android
    想问下开发环境是 nodemcu 的 lua 还是别的?这两天在考虑拿来局域网控制下小米台灯
    ntdll
        5
    ntdll  
       Oct 15, 2018
    想咨询一下看,我到淘宝上搜了下,ESP 8266 是一个 WiFi 模块(似乎是这样?大雾)。

    那....一个 WiFi 模块是如何具有可编程的计算能力的?还是说这个 ESP 8266 本身就是 SoC ?就像一个单片机一样(类似 STM 这样?)

    如果是这样的话,就是说 ESP 8266 本身就具有一定的可编程能力,同时也可以作为其他单片机的模组?
    codechaser
        6
    codechaser  
       Oct 15, 2018 via Android
    @gam2046 这些 wifi 模块本身就是个微型的计算机吧
    fy
        7
    fy  
       Oct 15, 2018
    @gam2046 #5 一个 soc,集成 wifi,十块钱,短暂玩过但弃坑了

    https://zhuanlan.zhihu.com/p/30449235

    https://zhuanlan.zhihu.com/p/30969848
    cr4fun
        8
    cr4fun  
    OP
       Oct 15, 2018 via iPhone
    @roadna 开发环境不是 lua,而是刷了 microPython。控制灯可以使用 mqtt 协议。这里有个控制电灯的演示地址 http://v.douyin.com/do5EoU/
    cr4fun
        9
    cr4fun  
    OP
       Oct 15, 2018 via iPhone
    @gam2046 esp8266 是一个 wifi 模块。但由于本身可刷 microPython,因此可以理解为是一块具备 wifi 功能的单片机。目前这类设备有 2 种,一种是单纯的 esp8266,有 1M 的存储空间和 2 个 io 接口(可实现软 i2c )。另一种是 NodeMCU,具备更多的存储空间和更多的 gpio。
    Osk
        10
    Osk  
       Oct 15, 2018 via Android
    围观大佬
    reuixiy
        11
    reuixiy  
       Oct 15, 2018
    已 Star ~

    话说我也有 esp8266,NodeMCU 也有一块,屏幕按钮啥的也有,有时间折腾折腾嘻嘻。

    要是能把 WIFI 用上,用手柄按钮或手机 Web 控制……也许也可以不用按钮,用其它传感器来实现用各种闹洞大开的交互(逃
    yanzixuan
        12
    yanzixuan  
       Oct 16, 2018
    还以为你要输出 js 给浏览器跑。
    居然是控制点阵,牛。
    yukiww233
        13
    yukiww233  
       Oct 16, 2018
    emmm 这样是怎么输入的
    ntdll
        14
    ntdll  
       Oct 16, 2018
    @cr4fun 感谢,也就是说 ESP 8266 原本指的是一个 WIFI 模块。而你买的相当于是一个集成了 ESP 8266 的开发板,可以这样理解么?而开发板上带了一个比较简单的 SOC ?
    cr4fun
        15
    cr4fun  
    OP
       Oct 16, 2018
    @gam2046 可以这样理解,使用集成 esp8266 的开发版 NodeMCU 是为了增加按钮,如果你只做一个屏幕能显示一些图片的话,可以直接在 esp8266 模块上面开发,只不过这样只能使用 2 个 GPIO 接口。
    cr4fun
        16
    cr4fun  
    OP
       Oct 16, 2018
    @reuixiy 好啊,期待你的作品
    cr4fun
        17
    cr4fun  
    OP
       Oct 16, 2018
    @yukiww233 你说的输入,指的是如何把程序刷进去,还是如何和游戏交互?
    yukiww233
        18
    yukiww233  
       Oct 16, 2018
    @cr4fun #17 游戏的交互输入 刚才没看到那俩按键 233
    brotherlegend
        19
    brotherlegend  
       Oct 19, 2018 via Android
    弱弱地问一下,可以用 5v 2a 输出的电源适配器给 nodemcu 供电吗?会烧了吗?
    cr4fun
        20
    cr4fun  
    OP
       Feb 25, 2019
    @brotherlegend 不会,如果你依然很担心,可以用 5v1a 的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5590 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 08:43 · PVG 16:43 · LAX 01:43 · JFK 04:43
    ♥ Do have faith in what you're doing.