当前位置: 首页 > 科技观察

【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(上)

时间:2023-03-13 08:57:04 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz总是做各种demo,是时候做个小app练习一下了。犹豫了半天,玩个小游戏还真是有意思。想起几年前风靡全球的FlappyBird,一屏一键就够了,刚刚好。OLED屏幕和按钮的驱动程序已经由专家发布,您可以使用它们。用C语言实现游戏逻辑什么的并不难。主要目的是验证HarmonyOS复杂界面实时交互应用的可行性。在本文中,我们主要解决了屏幕绘制的问题,下篇文章将介绍剩下的部分。我们需要用变量来记录小鸟的Y坐标、垂直速度、每个烟囱的位置和方向等,然后在主循环中不断更新,然后渲染到屏幕上。梳理一下主循环的流程,如图:OLED驱动,我用的是徐思伟老师的代码(源码地址)。对于BirdDrawScreen部分,我们需要解决一个问题,就是在渲染每一帧的时候,清屏,然后在屏幕的指定位置绘制图片。为此,我自己写了一个函数ssd1306_DrawBitmapAtPosition,通过参数xo,yo指定要绘制的位置坐标。voidssd1306_DrawBitmapAtPosition(constuint8_t*bitmap,uint8_twidth,uint8_height,int8_txo,int8_tyo){for(uint8_ty=0;ySSD1306_HEIGHT||yo+y<0)继续;for(uint8_tx=0;xSSD1306_WIDTH||xo+x<0)continue;uint8_tbyte=bitmap[(y*width/8)+(x/8)];uint8_tbit=byte&(0x80>>(x%8));ssd1306_DrawPixel(xo+x,yo+y,bit?White:Black);}}}小鸟和烟囱的图片代码先画出来,然后就可以轻松搞定通过img2code.py。这里小鸟只做了一帧,以后有可能做成多帧的动画效果。烟囱由头部和重复的主体组成以节省内存。游戏逻辑不难,主要是小鸟有重力加速度,烟囱随机生成,固定速度移动循环场景,碰撞检测等等。该代码将在文章后面发布。上图:下一篇我们会添加按钮事件来控制小鸟的飞行。了解更多请访问:与华为官方共建鸿蒙科技社区https://harmonyos.51cto.com/#zz