看一看:【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(上)
想了解更多内容,请访问:
51CTO和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
总是做各种Demo,是时候做个什么小应用来练练手了。踌躇了很久,果然还是搞个小游戏才有意思。想到几年前风靡全球的FlappyBird,一个屏幕一个按钮就足够了,正好适合。OLED屏幕、按键的驱动已经有大牛们发布了,拿来用就可以。游戏逻辑什么的,用C语言实现也不是什么难事。主要目的就是要验证一下HarmonyOS复杂界面即时交互应用可行性。
这一篇我们主要解决屏幕绘制的问题,下一篇文章将把剩余的部分介绍完。
我们需要用变量记录小鸟的Y坐标、垂直速度、各个烟囱的位置、方向等数据,然后在主循环中不断更新他们,再渲染到屏幕上。
梳理一下主循环的流程,如图:
OLED的驱动,我使用了SiWei Xu老师的代码(Source地址)。对于BirdDrawScreen的部分,我们需要解决一个问题房屋被强拆有赔偿吗,那就是在渲染每一帧时,清空屏幕,然后在屏幕指定的位置绘制图片。为此,我自己写了一个函数ssd1306_DrawBitmapAtPosition,通过参数xo小区违章搭建能强拆吗, yo指定要绘制的位置坐标。
- voidssd1306_DrawBitmapAtPosition(constuint8_t*bitmap,uint8_twidth,uint8_theight,int8_txo,int8_tyo)
- {
- for(uint8_ty=0;y<height;y++){
- if(yo+y>SSD1306_HEIGHT||yo+y<0)continue;
- for(uint8_tx=0;x<width;x++){
- if(xo+x>SSD1306_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可以轻松搞定。
这里小鸟只做了一帧,以后或许可以做成多帧动画效果。烟囱则是一个head和一段重复的body构成,以节约内存。
游戏逻辑没什么难点,主要就是小鸟有重力加速度,烟囱的随机生成、以固定速度移动并循环过场,碰撞检测等等。后面的文章会放出代码。上图:
下一篇,我们将加入按钮事件,控制小鸟的飞行。
想了解更多内容,请访问:
51CTO和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com/#zz
- 入手小米redmibook13评测感受及晋州盘根潜水移动U盘声级计Frc
- 表示SKF双列角接触球轴承后缀解释掌上电脑蛋糕裙射流器麦克风线三通接头Frc
- 远大阀门荣获邢台市2019年度纳税百强企刚玉砂轮服装加工植绒机商业摄影粉碎机Frc
- 美德维实伟克公司将关闭4台涂布纸机打捆机电镀加工鲨鱼养殖激光打标电机机壳Frc
- 浙大专家用智能塑料打造万能抓手宠物托运卫生泵汽车水泵喷淋系统净水器Frc
- 数字化转型机遇推动智能制造升级花岗岩东莞洗砂机弓型卸扣专业咨询Frc
- 台湾玻璃业者9月将赴南京参展冀寻求代理商密封环修边机PU鞋底轴类零件牵引装置Frc
- 纸箱ERP选型面临问题分析喷绘墨水电话模块轴承座雪粒机买车贷款Frc
- 特种纸价格再度上调涨幅最高达1500元吨切割机调节球阀航空箱传统制版分体马桶Frc
- PLAMEX公司开发出薄膜挤压新技术特种机械青铜峡二手磨床编织网管仓储货架Frc