自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【鴻蒙開發(fā)板試用】用OLED板實(shí)現(xiàn)FlappyBird小游戲(中)

系統(tǒng)
小伙伴們久等了,在上一篇《【開發(fā)板試用】用OLED板實(shí)現(xiàn)FlappyBird小游戲(上)》中,我們本著拿來主義的原則,成功的讓小鳥在OLED屏幕上自由飛翔起來,下面我們將加入按鈕交互功能。

想了解更多內(nèi)容,請?jiān)L問:
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz

小伙伴們久等了,在上一篇《【開發(fā)板試用】用OLED板實(shí)現(xiàn)FlappyBird小游戲(上)》中,我們本著拿來主義的原則,成功的讓小鳥在OLED屏幕上自由飛翔起來,下面我們將加入按鈕交互功能。

這里感謝唐佐林老師的無私分享,利用他開發(fā)的按鈕組件,開箱即用,節(jié)省了大量的開發(fā)時(shí)間(鏈接)。首先將按鈕組件的初始化函數(shù)InitButton搬到我們的主程序中,再寫一個(gè)按鈕事件回調(diào)函數(shù)Button_Callback,里面加入對邏輯的判斷和處理即可。

  1. //按鈕事件回調(diào)函數(shù) 
  2. static void Button_Callback(const char* sender, BtnEvent event) 
  3.     printf("[Button] Button_Callback() : %s -> %d\n", sender, event); 
  4.  
  5.     if( event == Pressed ) 
  6.     {  
  7.         /* Pressed == 1     按下事件處理代碼 */  
  8.         if(isStarted == 0) 
  9.         { 
  10.             BirdStart(); 
  11.         }else
  12.             BirdFlap(); 
  13.         } 
  14.     } 
  15.  
  16. //按鈕組件初始化 
  17. int InitButton(void) 
  18.     printf("InitButton\n"); 
  19.  
  20.     int ret = 0; 
  21.  
  22.     ret += DTButton_Init(); // 初始化按鍵事件處理上下文 
  23.  
  24.     /* 設(shè)置GPIO_8按鍵的回調(diào)函數(shù),同時(shí)需要響應(yīng)按下,釋放以及長按三個(gè)事件 */ 
  25.     /* 按鍵觸發(fā)順序: Pressed -> LongPressed(optional) -> Released */ 
  26.     ret += DTButton_Enable("GPIO_8", Button_Callback, Pressed | LongPressed | Released); 
  27.  
  28.     /* 設(shè)置S1按鍵的回調(diào)函數(shù) */ 
  29.     ret += DTButton_Enable("S1", Button_Callback, Pressed); 
  30.  
  31.     printf("InitButton: %d\n", ret); 
  32.     return ret; 

 其中isStart是一個(gè)全局變量,定義在Bird.h中,作為游戲是否開始的標(biāo)志。

由于加入了游戲標(biāo)題界面,在按鈕按下時(shí),這里有兩種情況,如果是在游戲標(biāo)題界面中,則開始游戲,即調(diào)用BirdInit和BirdStart函數(shù);如果已經(jīng)在游戲中,則調(diào)用小鳥撲騰函數(shù)BirdFlap。而BirdFlap就做一件事情,把小鳥的垂直方向速度置為固定值。這個(gè)值我經(jīng)過多次調(diào)優(yōu),最終固定在-3.5。

看這張圖能更容易理解坐標(biāo)系和物體的運(yùn)動(dòng):


其他的改進(jìn),包括右上角增加了一個(gè)分?jǐn)?shù)指示器,具體就是用飛過的距離除以10得到。

相較第一篇,游戲流程基本沒有變化,增加的是按鈕的控制,由于使用了回調(diào)函數(shù),即異步處理,代碼閱讀起來更友好也更簡潔。

下面是效果圖:


本來打算到此結(jié)束,后來一想其實(shí)還能做更多功能,比如聯(lián)網(wǎng)對戰(zhàn)?也歡迎大家留言告訴你的想法。

代碼奉上。

想了解更多內(nèi)容,請?jiān)L問:
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2020-11-25 11:55:47

FlappyBird

2021-01-15 12:15:36

鴻蒙HarmonyOS游戲

2021-09-02 15:25:53

鴻蒙HarmonyOS應(yīng)用

2020-11-27 11:52:40

OneNet

2020-11-26 12:02:07

OneNet平臺

2020-10-30 17:42:36

鴻蒙 OS Hi386

2020-11-17 12:15:36

MQTT開發(fā)

2020-10-20 09:32:43

HiSparkWi-FiIoT

2020-11-03 09:53:04

體驗(yàn)官方固件程序

2020-12-11 12:45:04

鴻蒙Hi3861游戲

2021-12-15 15:28:18

鴻蒙HarmonyOS應(yīng)用

2020-12-16 10:05:48

鴻蒙開發(fā)板Onenet平臺

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2021-09-08 15:44:56

鴻蒙HarmonyOS應(yīng)用

2020-11-23 09:32:43

WIFI連接

2022-07-08 14:53:46

掃雷小游戲鴻蒙

2021-12-20 21:01:52

鴻蒙HarmonyOS應(yīng)用

2020-12-09 09:44:29

Hi3861硬件介紹鴻蒙開發(fā)板

2020-10-23 09:50:15

HiSpark Wi-開發(fā)套件

2020-10-21 10:01:47

HiSpark Wi-智能家居套件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號