使用OpenHarmony的ets語言來編寫一個(gè)簡單的飛機(jī)大戰(zhàn)小游戲
閑來無事,想使用OpenHarmony開發(fā)個(gè)小游戲試試,曾試過使用canvas來繪制,后發(fā)現(xiàn)該組件的使用不是很靈活(或許是自己能力不夠),所以本工程全部使用最基本組件配合@State來實(shí)現(xiàn)
創(chuàng)建工程
打開DevEcoStudioForOpenHarmony編譯器,創(chuàng)建一個(gè)OpenHarmony工程,選擇第一項(xiàng),點(diǎn)擊next

編寫自己的項(xiàng)目名稱,存放地址,開發(fā)語言等信息,我這里給項(xiàng)目起名叫 “OpenHarmonyForGame”,開發(fā)語言選擇 ets,然后點(diǎn)擊 Finish

網(wǎng)上找了初步找了幾張素材,先給他放進(jìn)去




畫敵機(jī),并讓敵機(jī)飛起來
開始整理思路,由于游戲,是一個(gè)不斷變化的畫面,所以需要一個(gè)永久定時(shí)器用來更新ui界面,而在ets的設(shè)立理念中,只有標(biāo)注了@State的值發(fā)生改變時(shí),ui相對應(yīng)的組件才會發(fā)生改變,根據(jù)這一思路,就有了下面的基本代碼邏輯

先在組件創(chuàng)建時(shí),定義一個(gè)定時(shí)器,每隔10毫秒改變一次i的值,而Text組加你又引用了i的值,故連帶后面的onDraw方法一起被調(diào)用,這樣的話,onDraw方法就會不停的去執(zhí)行,接下來我們開始定義一些最基本的變量

先來測試下吧,每隔500毫秒就往屏幕上添加一個(gè)敵機(jī),位置為隨機(jī)數(shù)



嗯,還行,敵機(jī)是可以畫出來了,接下來就是讓敵機(jī)動(dòng)起來了,由于敵機(jī)是自上而下移動(dòng)的,所以我們需要實(shí)時(shí)去改變每個(gè)敵機(jī)的y軸的位置

代碼解釋:首先設(shè)置一個(gè)延遲器,定時(shí)添加一輛敵機(jī),敵機(jī)的x坐標(biāo)的位置是屏幕寬度范圍內(nèi)的隨機(jī)數(shù),y坐標(biāo)的位置是負(fù)的敵機(jī)大小的位置,為啥是負(fù)數(shù)嘞,由于屏幕最上角的坐標(biāo)是 (0,0),如果直接設(shè)置0 的話,飛機(jī)會憑空蹦出來,如果是如數(shù)的話,看起來就像是從屏幕外面飛進(jìn)來的了。 飛機(jī)添加完成之后,繼續(xù)循環(huán)飛機(jī)數(shù)組,改變每個(gè)飛機(jī)y坐標(biāo),讓他不算增大,這樣的話,飛機(jī)就能飛起來啦,效果如下圖

本集就先到這里啦,下集我們開始畫自己的飛機(jī)