一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙上開發(fā)“小蜜蜂”游戲

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-04-03 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

小時候我們有個熟悉的游戲叫小蜜蜂。本文教大家在鴻蒙上學(xué)做這個小蜜蜂游戲。

開發(fā)實戰(zhàn)

①HAP 應(yīng)用建立

前面我們介紹了簡單的 Hap 應(yīng)用的開發(fā)以及基礎(chǔ)控件的介紹,這里我們就不贅述 Hap 項目的建立過程,以下就是基礎(chǔ)的 Hap 的 page 文件:index.ets。

build(){
Row(){
Column(){
Canvas(this.context)
.width('100%')
.height('100%')
.onClick((ev:ClickEvent)=>{
console.info("click!!")
this.doClick()
})
.onReady(()=>{
this.context.imageSmoothingEnabled=false
this.drawall()
})
}
.width('100%')
}
.height('100%')
.backgroundColor("#000000")
}
build 是基礎(chǔ)頁面的構(gòu)造函數(shù),用于界面的元素構(gòu)造,其他的頁面的生命周期函數(shù)如下:
declareclassCustomComponent{
/**
*Customizethepop-upcontentconstructor.
*@since7
*/
build():void;

/**
*aboutToAppearMethod
*@since7
*/
aboutToAppear?():void;

/**
*aboutToDisappearMethod
*@since7
*/
aboutToDisappear?():void;

/**
*onPageShowMethod
*@since7
*/
onPageShow?():void;

/**
*onPageHideMethod
*@since7
*/
onPageHide?():void;

/**
*onBackPressMethod
*@since7
*/
onBackPress?():void;
}

②Canvas 介紹

canvas 是畫布組件用于自定義繪制圖形,具體的 API 頁面如下:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-components-canvas-canvas-0000001333641081
頁面顯示前會調(diào)用 aboutToAppear() 函數(shù),此函數(shù)為頁面生命周期函數(shù)。 canvas 組件初始化完畢后會調(diào)用 onReady() 函數(shù),函數(shù)內(nèi)部實現(xiàn)小游戲的初始頁面的繪制。

初始化頁面數(shù)據(jù):

drawall(){
this.context.clearRect(0,0,this.context.width,this.context.height)
this.drawFj();
this.drawEn();
this.drawBullet();
this.drawScore();
}
繪制飛機(jī):
drawFj(){
this.context.drawImage(this.fjImg,this.fjStartX,this.fjslotY,this.birdH,this.birdW)
}
繪制害蟲:
drawEn(){
for(letline=0;line

不同行的害蟲長相不同,分值不同。

③游戲邏輯

簡單的小游戲主體游戲邏輯為:點(diǎn)擊鼠標(biāo)移動飛機(jī),飛機(jī)發(fā)射子彈,命中害蟲,計算分?jǐn)?shù):

doClick(){
if(this.en1slotX<=?50)?{
??????this.en1slotX?+=?this.birdW
????}?else?{
??????this.en1slotX?-=?this.birdW
????}
????console.log("doclick----")
????this.moveFj();
??}

④完整邏輯

@Entry
@Component
structIndex{
@Statemessage:string='HelloWorld'
privatesettings:RenderingContextSettings=newRenderingContextSettings(true);
privatecontext:CanvasRenderingContext2D=newCanvasRenderingContext2D(this.settings);
privateblockType:number=0
privateblockSize:number=30
privateen1Img:ImageBitmap=newImageBitmap("common/images/mf1.png")
privateen2Img:ImageBitmap=newImageBitmap("common/images/mf2.png")
privateen3Img:ImageBitmap=newImageBitmap("common/images/mf3.png")
privatefjImg:ImageBitmap=newImageBitmap("common/images/fj.png")

privatestartX=30;
privatestartY=100;
privateenStartY=140;
privatefjStartX=50;
privatefjStartY=610;
privatefjslotX=50;
privatefjslotY=this.fjStartY;
privateen1slotX=50;
privateen1slotY=this.enStartY;
privateen2slotX=50;
privateen2slotY=this.enStartY;
privatebulletX=65;
privatebulletY=550;
privatebirdH=40;
privatebirdW=40;
privatescore=0;
privatefjDirection=1;

privateenemylist=[
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
]

moveFj(){
this.fjStartX=this.fjStartX+this.fjDirection*this.birdW
if(this.fjStartX>=210){
this.fjDirection=-1
}elseif(this.fjStartX<=?50)?{
??????this.fjDirection?=?1
????}
??}

??drawFj()?{
????this.context.drawImage(?this.fjImg,?this.fjStartX,?this.fjslotY,this.birdH,this.birdW)
??}

??drawEn()?{
????for?(let?line=0;?line?{
setInterval(()=>{
if(that.en1slotX<=?50)?{
??????????that.en1slotX?+=?that.birdW
????????}?else?{
??????????that.en1slotX?-=?that.birdW
????????}

????????console.log(that.en1slotX.toString())
????????that.drawall()

??????},?ms)
????})
??}

??doClick()?{
????if?(this.en1slotX?<=?50)?{
??????this.en1slotX?+=?this.birdW
????}?else?{
??????this.en1slotX?-=?this.birdW
????}
????console.log("doclick----")
????this.moveFj();
??}

??aboutToAppear()?{
????this.sleep(1000)
??}

??build()?{
????Row()?{
??????Column()?{
????????Canvas(this.context)
??????????.width('100%')
??????????.height('100%')
??????????.onClick((ev:?ClickEvent)?=>{
console.info("click!!")
this.doClick()
})
.onReady(()=>{
this.context.imageSmoothingEnabled=false
this.drawall()
})
}
.width('100%')
}
.height('100%')
.backgroundColor("#000000")
}
}
遺留問題:

飛機(jī)的子彈可以多發(fā)

害蟲可以攻擊飛機(jī)

游戲聲音問題:目前 ohos 不支持音頻播放資源音頻,看之后版本是否支持

DevEco 用 setInterval 重繪 canvas 會導(dǎo)致 ide 崩潰

總結(jié)

本文主要介紹了小游戲的開發(fā),畫布功能的使用,獲取源碼請通過“閱讀原文”下載附件。

作者:王石

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 游戲
    +關(guān)注

    關(guān)注

    2

    文章

    772

    瀏覽量

    26841
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1600

    瀏覽量

    63977
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64785
  • Canvas
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    11233
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2613

    瀏覽量

    44013

原文標(biāo)題:鴻蒙上開發(fā)“小蜜蜂”游戲

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    高云半導(dǎo)體小蜜蜂家族再添新成員——GW1NS-2 FPFA-SoC芯片揭開AI的序幕

    中國廣州,2018年7月23日,廣東高云半導(dǎo)體科技股份有限公司(以下簡稱“高云半導(dǎo)體”)今日宣布:高云半導(dǎo)體首款FPGA-SoC產(chǎn)品—小蜜蜂?(LittleBee?)家族GW1NS系列GW1NS-2開始提供工程樣片及開發(fā)板,揭開了布局AI的序幕。
    的頭像 發(fā)表于 07-23 14:09 ?1w次閱讀

    [轉(zhuǎn)帖]這才叫高科技:美科學(xué)家用機(jī)械蜜蜂演奏007主題曲

    賓夕法尼亞大學(xué)研制的四旋翼機(jī)械蜜蜂曾經(jīng)令人印象深刻,但是從來沒人想到,這些機(jī)械小蜜蜂真的會干出一件和007相稱的事:它們在一系列復(fù)雜的飛行之后,成功地演奏出了邦德的主題曲。這些機(jī)器人在電子琴鍵上降落
    發(fā)表于 08-13 20:19

    小蜜蜂擴(kuò)音器的電路圖和元器件清單

    本帖最后由 gk320830 于 2015-3-7 13:41 編輯 小蜜蜂擴(kuò)音器的電路圖和元器件清單。我很急希望各位大大可以幫忙。謝謝大家了。。。{:4:}
    發(fā)表于 04-19 22:44

    小蜜蜂】基于ZigBee的水情信息采集平臺

    本帖最后由 wangjiamin2014 于 2015-1-9 11:38 編輯 項目名稱:基于ZigBee的水情信息采集平臺 團(tuán)隊名稱:小蜜蜂團(tuán)隊成員:張建祥、李如菊、李艷作品演示作品介紹水
    發(fā)表于 12-31 11:19

    游戲玩家讓自己兒子按年代順序玩了六年古董游戲

    。1979年的Galaxian(小蜜蜂)是他兒子的啟蒙游戲。他的兒子Eliot出生于2004年,因此Baio最近才發(fā)表了他長達(dá)十年的研究——“關(guān)于強(qiáng)迫懷舊和質(zhì)疑教育的實驗”。該研究是為了讓他的兒子探索媒介
    發(fā)表于 05-04 16:12

    小蜜蜂雙輪平衡車

    `經(jīng)過一個月的努力,做了點(diǎn)小東西,在這里跟大家分享一下。當(dāng)然也歡迎大家多多噴我。由于本人等級有限沒辦法發(fā)視頻連接,大家可以前往優(yōu)酷,然后搜索----小蜜蜂雙輪車測試視頻.有什么問題可以加入個人qq:2424607185.`
    發(fā)表于 01-15 17:27

    小蜜蜂機(jī)器人APP測試

    經(jīng)過一個月的努力,做了點(diǎn)小東西(無廣告),在這里跟大家分享一下。當(dāng)然也歡迎大家多多噴我。下載方式:應(yīng)用寶,然后搜索“小蜜蜂機(jī)器人”。由于本人等級有限沒辦法發(fā)視頻連接,大家可以前往優(yōu)酷,然后搜索---”小蜜蜂機(jī)器人APP使用介紹“ .有什么問題可以加入個人qq:242460
    發(fā)表于 01-17 17:09

    有一種微信營銷神器叫云控系統(tǒng),有它吸粉引流不會累!

    就研發(fā)了這樣一款微信營銷吸粉神器——小蜜蜂吸粉精靈云控系統(tǒng)。做過微商或者通過微信進(jìn)行營銷的人都知道,在通過微信進(jìn)行微信營銷吸粉引流的過程中,人為操作往往會出現(xiàn)各種各樣的問題,需要耗費(fèi)大量的時間、人力去
    發(fā)表于 08-15 14:32

    【EFM8 Universal Bee試用體驗】開箱+上電

    `晚上收到了開發(fā)板,我打開一看,包裝果然有大廠風(fēng)范,一個大大的蜜蜂,我姑娘看到了,以為里面裝的是小蜜蜂玩具呢,差點(diǎn)給就地正法。我趕快搶過來,告訴他這個是爸爸的玩具,我才有機(jī)會打開了看看里面有什么不但
    發(fā)表于 11-07 12:34

    【FPGA開發(fā)者項目連載】一次開發(fā)經(jīng)驗淺談

    ` 非常開心參加了高云半導(dǎo)體的的星核計劃。也很榮幸收到了高云半導(dǎo)體贊助的小蜜蜂開發(fā)板。玩FPGA也有兩三年的時間了,因為學(xué)校有時間,平常也喜歡做一些相關(guān)的東西。 這也是我第一次拿到咱們國產(chǎn)的FPGA
    發(fā)表于 05-12 19:41

    海爾小蜜蜂智能修改版V1.03

    電子發(fā)燒友網(wǎng)站提供《海爾小蜜蜂智能修改版V1.03.exe》資料免費(fèi)下載
    發(fā)表于 02-27 09:15 ?0次下載

    瞄準(zhǔn)車載FPGA領(lǐng)域,高云半導(dǎo)體推小蜜蜂家族新品

    ,分別是使用嵌入式閃存工藝的非易失FPGA小蜜蜂?家族和基于SRAM的中密度FPGA晨熙?家族,這兩個家族的器件均已支持商業(yè)級(0C°-85C°)和工業(yè)級(-40C°~+100C°)溫度標(biāo)準(zhǔn)。此次推出支持汽車級溫度范圍(-40C°~+125C°)的為小蜜蜂?家族部分FPG
    的頭像 發(fā)表于 11-30 10:41 ?9422次閱讀

    高云半導(dǎo)體小蜜蜂家族GW1NS系列產(chǎn)品入圍Arm TechCon 2018年度最佳技術(shù)創(chuàng)新獎

    中國廣州,2018年10月10日,廣東高云半導(dǎo)體科技股份有限公司(以下簡稱“高云半導(dǎo)體”)今日宣布,小蜜蜂家族GW1NS系列產(chǎn)品被提名入圍Arm TechCon 2018年度最佳技術(shù)創(chuàng)新獎。
    的頭像 發(fā)表于 10-10 10:27 ?6427次閱讀

    鴻蒙上實現(xiàn)“數(shù)字華容道”小游戲

    本篇文章教大家如何在鴻蒙上實現(xiàn)“數(shù)字華容道”小游戲。
    的頭像 發(fā)表于 12-26 09:52 ?1578次閱讀

    8位MCU市場中,飛來的這只“小蜜蜂”~

    8位MCU市場中,飛來的這只“小蜜蜂”~
    的頭像 發(fā)表于 10-26 15:44 ?971次閱讀
    8位MCU市場中,飛來的這只“<b class='flag-5'>小蜜蜂</b>”~