没有 FC 红白机,我用 esp8266 徒手造一个玩游戏! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cr4fun
V2EX    分享创造

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

  •  1
     
  •   cr4fun 2018 年 10 月 5 日 8204 次点击
    这是一个创建于 2678 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 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 月 5 日
    楼主很厉害,手动点赞。
    carlclone
        2
    carlclone  
       2018 年 10 月 5 日 via Android
    666
    des
        3
    des  
       2018 年 10 月 5 日 via Android   1
    老哥,不需要 excel 啊。
    保存成 bmp,直接读啊
    yuelang85
        4
    yuelang85  
       2018 年 10 月 5 日
    相当不错,很有启发意义
    isnowify
        5
    isnowify  
       2018 年 10 月 5 日
    厉害!!
    iwtbauh
        6
    iwtbauh  
       2018 年 10 月 5 日 via Android   1
    纠正一个概念问题

    电子表格 != excel
    同理
    演示文稿,幻灯片 != ppt
    pityhero233
        7
    pityhero233  
       2018 年 10 月 5 日 via Android
    @iwtbauh 对啊对啊,看到楼主在用开源电子表格了还叫 excel 很无奈(_)
    diggerdu
        8
    diggerdu  
       2018 年 10 月 5 日 via iPhone
    @pityhero233 习惯问题 都懂就行
    iwj
        9
    iwj  
       2018 年 10 月 5 日
    帅呆了,给你点个赞!
    mobi
        10
    mobi  
       2018 年 10 月 5 日
    看演示视频感觉刷新率有点低,建议不要用 python 写,我之前用 arduino 写的 fps 也有 60,也有见过别人 fps 能到 150 的
    Sukizen
        11
    Sukizen  
       2018 年 10 月 5 日
    看演示视频真的好捉急,老是 game over
    circleee
        12
    circleee  
       2018 年 10 月 5 日
    CEBBCAT
        13
    CEBBCAT  
       2018 年 10 月 5 日
    @mobi #10 有 Github 地址吗?
    abmin521
        14
    abmin521  
       2018 年 10 月 5 日
    不错不错 曾被同款 OLED 烧到手
    CEBBCAT
        16
    CEBBCAT  
       2018 年 10 月 5 日
    @mobi 非常感谢
    t123yh
        17
    t123yh  
       2018 年 10 月 5 日 via Android
    @abmin521 OLED 是怎么烧到手的
    fengc
        18
    fengc  
       2018 年 10 月 5 日
    哇 66666
    就是视频老是 GAME OVER 有点着急 QUQ ~
    brotherlegend
        19
    brotherlegend  
       2018 年 10 月 6 日 via Android
    一直想买 8266 来玩,但淘宝上面好多质量不行的,楼主推荐个连接
    but0n
        20
    but0n  
       2018 年 10 月 6 日 via iPhone
    还有这种取模操作 学习了
    but0n
        21
    but0n  
       2018 年 10 月 6 日 via iPhone
    安利下之前收藏的取模工具 t/439466#reply2
    liwei
        22
    liwei  
       2018 年 10 月 6 日 via Android
    @brotherlegend 这个应该是官方
    [NodeMCU Lua WiFi 测试板 开发板 基于 ESP8266WiFi 模块 安信可] http://m.tb.cn/h.3STELfE?sm=71218b 点击链接,再选择浏览器;或制这段描述¥ ymOmb5SuECt ¥后到淘♂♀[来自超级会员的分享]
    run2
        23
    run2  
       2018 年 10 月 6 日
    @liwei #21 板子不一样,但他们家的好像也不错
    ESP32 系列看起来可以
    cr4fun
        24
    cr4fun  
    OP
       2018 年 10 月 6 日 via iPhone
    @fengc 嗯,自己写的游戏自己都玩不好...
    cr4fun
        25
    cr4fun  
    OP
       2018 年 10 月 6 日 via iPhone
    @mobi i2c 比较慢,如果 spi 可能会好一些。当初觉得 2 根线能搞定显示何必用 4 根,所以没买 spi 的 oled。
    cr4fun
        26
    cr4fun  
    OP
       2018 年 10 月 6 日 via iPhone
    @brotherlegend 不能推荐,我买了 5 块板子,只有 3 个好使,这东西只能玩玩。建议买乐鑫原厂的 esp8266 模块自己做开发板,加 4M 存储空间就够了,最好加到 16M,这样还可以把游戏声音写进去。
    brotherlegend
        27
    brotherlegend  
       2018 年 10 月 7 日 via Android
    @cr4fun 好像好多人都反馈这玩意买的都部分有问题
    maemolee
        28
    maemolee  
       2018 年 10 月 7 日
    可以可以,用 excel 画图很创意。
    728528678
        29
    728528678  
       2018 年 10 月 8 日
    很有创意,哈哈哈
    PythonAnswer
        30
    PythonAnswer  
       2018 年 10 月 9 日
    恐龙仙人跳, 好像很好玩啊!! 支持
    supuwoerc
        31
    supuwoerc  
       2018 年 10 月 9 日
    是个狠人=。=
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3650 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 04:05 PVG 12:05 LAX 20:05 JFK 23:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86