这款游戏是模仿 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.