V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cr4fun
V2EX  ›  分享创造

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

  •  1
     
  •   cr4fun · 2018-10-05 17:24:58 +08:00 · 7550 次点击
    这是一个创建于 2241 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 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

    31 条回复    2018-10-09 21:07:43 +08:00
    delectate
        1
    delectate  
       2018-10-05 18:15:01 +08:00
    楼主很厉害,手动点赞。
    carlclone
        2
    carlclone  
       2018-10-05 18:17:22 +08:00 via Android
    666
    des
        3
    des  
       2018-10-05 18:17:44 +08:00 via Android   ❤️ 1
    老哥,不需要 excel 啊。
    保存成 bmp,直接读啊
    yuelang85
        4
    yuelang85  
       2018-10-05 18:33:14 +08:00
    相当不错,很有启发意义
    isnowify
        5
    isnowify  
       2018-10-05 18:36:32 +08:00
    厉害!!
    iwtbauh
        6
    iwtbauh  
       2018-10-05 19:32:01 +08:00 via Android   ❤️ 1
    纠正一个概念问题

    电子表格 != excel
    同理
    演示文稿,幻灯片 != ppt
    pityhero233
        7
    pityhero233  
       2018-10-05 19:58:10 +08:00 via Android
    @iwtbauh 对啊对啊,看到楼主在用开源电子表格了还叫 excel 很无奈╮(╯_╰)╭
    diggerdu
        8
    diggerdu  
       2018-10-05 20:05:49 +08:00 via iPhone
    @pityhero233 习惯问题 都懂就行
    iwj
        9
    iwj  
       2018-10-05 20:13:00 +08:00
    帅呆了,给你点个赞!
    mobi
        10
    mobi  
       2018-10-05 21:10:55 +08:00
    看演示视频感觉刷新率有点低,建议不要用 python 写,我之前用 arduino 写的 fps 也有 60,也有见过别人 fps 能到 150 的
    Sukizen
        11
    Sukizen  
       2018-10-05 21:16:49 +08:00
    看演示视频真的好捉急,老是 game over
    circleee
        12
    circleee  
       2018-10-05 21:27:49 +08:00
    CEBBCAT
        13
    CEBBCAT  
       2018-10-05 21:45:39 +08:00
    @mobi #10 有 Github 地址吗?
    abmin521
        14
    abmin521  
       2018-10-05 22:02:39 +08:00
    不错不错 曾被同款 OLED 烧到手
    CEBBCAT
        16
    CEBBCAT  
       2018-10-05 22:13:42 +08:00
    @mobi 非常感谢
    t123yh
        17
    t123yh  
       2018-10-05 22:16:46 +08:00 via Android
    @abmin521 OLED 是怎么烧到手的
    fengc
        18
    fengc  
       2018-10-05 22:55:25 +08:00
    哇 66666
    就是视频老是 GAME OVER 有点着急 QUQ ~
    brotherlegend
        19
    brotherlegend  
       2018-10-06 00:03:15 +08:00 via Android
    一直想买 8266 来玩,但淘宝上面好多质量不行的,楼主推荐个连接
    but0n
        20
    but0n  
       2018-10-06 01:47:20 +08:00 via iPhone
    还有这种取模操作 学习了
    but0n
        21
    but0n  
       2018-10-06 01:53:16 +08:00 via iPhone
    安利下之前收藏的取模工具 https://www.v2ex.com/t/439466#reply2
    liwei
        22
    liwei  
       2018-10-06 10:37:54 +08:00 via Android
    @brotherlegend 这个应该是官方
    [NodeMCU Lua WiFi 测试板 开发板 基于 ESP8266WiFi 模块 安信可] http://m.tb.cn/h.3STELfE?sm=71218b 点击链接,再选择浏览器咑閞;或復·制这段描述¥ ymOmb5SuECt ¥后到👉淘♂寳♀👈[来自超级会员的分享]
    sobigfish
        23
    sobigfish  
       2018-10-06 11:35:39 +08:00
    @liwei #21 板子不一样,但他们家的好像也不错
    ESP32 系列看起来可以
    cr4fun
        24
    cr4fun  
    OP
       2018-10-06 20:11:32 +08:00 via iPhone
    @fengc 嗯,自己写的游戏自己都玩不好...
    cr4fun
        25
    cr4fun  
    OP
       2018-10-06 20:13:08 +08:00 via iPhone
    @mobi i2c 比较慢,如果 spi 可能会好一些。当初觉得 2 根线能搞定显示何必用 4 根,所以没买 spi 的 oled。
    cr4fun
        26
    cr4fun  
    OP
       2018-10-06 20:18:13 +08:00 via iPhone
    @brotherlegend 不能推荐,我买了 5 块板子,只有 3 个好使,这东西只能玩玩。建议买乐鑫原厂的 esp8266 模块自己做开发板,加 4M 存储空间就够了,最好加到 16M,这样还可以把游戏声音写进去。
    brotherlegend
        27
    brotherlegend  
       2018-10-07 07:53:00 +08:00 via Android
    @cr4fun 好像好多人都反馈这玩意买的都部分有问题
    maemolee
        28
    maemolee  
       2018-10-07 19:38:13 +08:00
    可以可以,用 excel 画图很创意。
    728528678
        29
    728528678  
       2018-10-08 22:16:02 +08:00
    很有创意,哈哈哈
    PythonAnswer
        30
    PythonAnswer  
       2018-10-09 04:14:58 +08:00
    恐龙仙人跳, 好像很好玩啊!! 支持
    supuwoerc
        31
    supuwoerc  
       2018-10-09 21:07:43 +08:00
    是个狠人=。=
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:01 · PVG 15:01 · LAX 23:01 · JFK 02:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.