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

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

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

【開發(fā)者說】開發(fā)案例分享:萬能卡片也能用來玩游戲

HarmonyOS開發(fā)者 ? 來源:未知 ? 2023-11-30 21:15 ? 次閱讀
# 開發(fā)者說 #

【開發(fā)者說】欄目是為HarmonyOS開發(fā)者提供的展示和分享平臺(tái),在這里,大家可以發(fā)表自己的技術(shù)洞察和見解,也可以展示自己的開發(fā)心得和成果。

歡迎大家積極投稿,后臺(tái)回復(fù)【投稿】,即可獲得投稿渠道。期待你們的分享~

前言

作為一名開發(fā)愛好者,從大了講,我學(xué)習(xí)并進(jìn)行HarmonyOS相關(guān)開發(fā)是為了能為鴻蒙生態(tài)建設(shè)盡一份綿薄之力,從小了講,就是為了自己的興趣。而萬能卡片是一個(gè)讓我非常感興趣的東西。

很多時(shí)候我跟別人解釋什么是萬能卡片,都會(huì)這么說:"萬能卡片能實(shí)現(xiàn)讓你在不用打開app的前提下,在桌面上就能使用到相關(guān)服務(wù)"。有一天,我的朋友跟我說,既然可以體驗(yàn)到各種服務(wù),那么能直接在桌面上玩游戲嗎?

通過對(duì)萬能卡片相關(guān)文檔的閱讀,我認(rèn)為想要實(shí)現(xiàn)一些簡(jiǎn)單的游戲應(yīng)該沒有問題,思考再三,我決定做一個(gè)井字棋小游戲,希望能給各位開發(fā)者提供些開發(fā)思路。

實(shí)現(xiàn)效果如下:

wKgaomVojAOAYiAoACBGlL2rc0k224.gif可以看到,在桌面上有一個(gè)2x2的小卡片,通過兩名玩家輪流下棋的方式,進(jìn)行井字棋的博弈,結(jié)局分為玩家1勝利、玩家2勝利或者平局,看似簡(jiǎn)單,但也實(shí)現(xiàn)了朋友提出來的"在桌面上玩游戲"的要求。

基本知識(shí)

想要學(xué)習(xí)這個(gè)項(xiàng)目的開發(fā),首先我們要掌握以下幾個(gè)知識(shí):

1. HUAWEI DevEco Studio是開發(fā)工具,是華為基于IDEA開源版本打造的開發(fā)平臺(tái),支持頁(yè)面預(yù)覽、多端模擬等功能;

2. ArkTS是目前主推的開發(fā)語言,簡(jiǎn)潔的語法規(guī)則極大的減少了學(xué)習(xí)成本;

3. 元服務(wù)是華為提出的一種新的概念,首先一個(gè)特點(diǎn)就是不用下載,即開即用;其次,元服務(wù)在手機(jī)上的表現(xiàn)形式,主要是萬能卡片,通過與萬能卡片的交互實(shí)現(xiàn)一些功能,也可以通過卡片作為類似于app的頁(yè)面入口實(shí)現(xiàn)更多的功能;最后,既然是以萬能卡片為入口的,其形式就具有多樣化的特點(diǎn),可以是2x2,也可以是1x2、2x4或者4x4。

項(xiàng)目創(chuàng)建

1. 建立項(xiàng)目

選擇"Atomic Service"即建立一個(gè)元服務(wù)項(xiàng)目,點(diǎn)擊"Next"。

wKgaomVojAOAS4YvAAGCUiCagys881.png

2. 項(xiàng)目目錄

這里有幾個(gè)重要的文件,首先是EntryAbility.ts,這個(gè)文件對(duì)應(yīng)的是UIAbility,通俗的理解就是,當(dāng)用戶想要通過與萬能卡片的交互打開一個(gè)類似app頁(yè)面的時(shí)候,那么打開的頁(yè)面就可以看做是一個(gè)UIAbility;接著是EntryFromAbility.ts,這個(gè)是卡片的Ability,可以做卡片的數(shù)據(jù)更新,或者與UIAbility相關(guān)的交互等;Index.ets就是默認(rèn)打開的頁(yè)面了;而WidgetCard.ets則是卡片的頁(yè)面;如果想要設(shè)置元服務(wù)的標(biāo)題,可以在AppScope/resources/base/element/string.json中修改value的值。wKgaomVojAOAAEHaAAEOjrVvfKY279.png

3. 預(yù)覽器

展開Previewer,預(yù)覽器中可以查看頁(yè)面效果,其中Default尺寸與大部分手機(jī)的實(shí)際效果是相同的??梢苑奖愕牟榭醋约旱腢I代碼寫出來是什么效果,也可以測(cè)試交互代碼,非常方便。

wKgaomVojASAEDEFAAGJ2czOhA4219.png

項(xiàng)目開發(fā)

以下操作均是在WidgetCard.ets中完成:

1. 繪制棋盤

棋盤的繪制分為三個(gè)部分:

首先是背景圖,直接在Column()上進(jìn)行設(shè)置背景,代碼為:

.backgroundImage($r('app.media.back'))
.backgroundImageSize(ImageSize.Cover)

(左右滑動(dòng)查看更多)

接著通過循環(huán)渲染,利用Flex布局來繪制格子,這里用到了兩個(gè)知識(shí)點(diǎn):

(1)自定義組件

這里的"gezi"就是一個(gè)自定義組件,傳入idx,num這兩個(gè)參數(shù),再綁定上一個(gè)click事件。

(2)循環(huán)渲染

這里需要在棋盤里顯示9個(gè)"gezi"組件,最簡(jiǎn)單的辦法是寫上9遍基本同樣的代碼,但是這樣既不便于維護(hù),也不美觀,因此可以使用循環(huán)渲染的方法。

Flex({wrap:FlexWrap.Wrap}){
  ForEach(this.qipan,(item,idx)=>{
    gezi({
      idx:idx,
      num:item,
      click:()=>{
        if(!this.canplay)return;
        let n = this.qipan[idx];
        if(n > 0)return;
        this.qipan[idx] = this.shunxv;
        this.shunxv = this.shunxv == 1 ? 2 : 1;
        //檢查
        this._Check();
      }
    })
  })
}.width(35*3)
.height(35*3)

(左右滑動(dòng)查看更多)

然后創(chuàng)建下方的兩個(gè)小圖標(biāo),"刷新"用來重置棋盤,而"信息"用來點(diǎn)擊進(jìn)入小游戲的說明頁(yè)。這里對(duì)于頁(yè)面的跳轉(zhuǎn),使用的是postCardAction方法。

最后再繪制一個(gè)結(jié)果顯示頁(yè)面,使用條件渲染來控制是否顯示,由于需要覆蓋整個(gè)頁(yè)面,因此采用了position+zindex的寫法。


	
if(this.resshow){
  //這里繪制一個(gè)結(jié)果提示頁(yè)面
  Column(){
    Text(this.res).fontSize(20).fontColor('white')
  }
  .backgroundColor('rgba(0,0,0,0.3)')
  .height('100%')
  .width('100%')
  .position({x:0,y:0})
  .zIndex(1)
  .alignItems(HorizontalAlign.Center)
  .justifyContent(FlexAlign.Center)
  .onClick(()=>{
    this._Init();
  })
}

(左右滑動(dòng)查看更多)

最后效果如下:

wKgaomVojASACC3nAAHjsU6SQIw478.png

2. 項(xiàng)目邏輯

井字棋的基本原理非常簡(jiǎn)單,就是在橫、豎或者斜線上,同一類棋子排成三個(gè)即為勝利,而且整體只有9個(gè)格子,所以我們可以直接創(chuàng)建一個(gè)一維數(shù)組代表棋盤:

@State qipan : Array<number> =
  [0,0,0,
   0,0,0,
0,0,0]

(左右滑動(dòng)查看更多)

0代表這個(gè)格子沒有落子,1代表是"X",2代表是"O",當(dāng)玩家每次落子后,這個(gè)數(shù)組中相應(yīng)的數(shù)字就會(huì)改變,同時(shí)渲染棋盤。

作為一個(gè)簡(jiǎn)單的小游戲,其勝利的情況是有限的幾種,可以直接將其羅列出來:

constwin=[[0,1,2],[3,4,5],[6,7,8],[0,3,6],[1,4,7],[2,5,8],[0,4,8],[2,4,6]];

(左右滑動(dòng)查看更多)

簡(jiǎn)單解釋一下,比如第一個(gè)[0,1,2],指的就是,當(dāng)棋盤數(shù)組的第0位、第1位和第2位,這三個(gè)數(shù)字相同時(shí),說明有一個(gè)玩家勝出了。

每次落子后執(zhí)行_Check方法,對(duì)勝利的每一種情況進(jìn)行循環(huán),檢查當(dāng)前棋盤是否符合其中的任意一種勝利條件,當(dāng)然還有一個(gè)條件,那就是要把0排除在勝利條件外,因?yàn)?代表的是沒有落子。如果9個(gè)格子都填滿了,卻沒有觸發(fā)勝利條件的話,則視為平局。

總結(jié)

萬能卡片的潛力實(shí)際上是非常巨大的,目前市面上我發(fā)現(xiàn)大部分的卡片主要用來進(jìn)行信息的展示,還需要在"交互"或者"可玩性"上繼續(xù)挖掘,希望這篇文章能給大家?guī)硪稽c(diǎn)啟發(fā),期待出現(xiàn)更多好玩的萬能卡片。

更多推薦

wKgaomVojASAY-VmAADXrK0uGFA180.gif點(diǎn)擊下方圖片鏈接,查看更多欄目?jī)?nèi)容


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

    關(guān)注

    79

    文章

    1954

    瀏覽量

    29897

原文標(biāo)題:【開發(fā)者說】開發(fā)案例分享:萬能卡片也能用來玩游戲

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    KaihongOS 4.1.2開發(fā)者預(yù)覽版正式上線,誠(chéng)邀開發(fā)者免費(fèi)試用!

    深開鴻在2024開放原子開源生態(tài)大會(huì)上正式宣布KaihongOS4.1.2開發(fā)者預(yù)覽版全面上線,并向全球開發(fā)者開放免費(fèi)下載。作為KaihongOS不斷創(chuàng)新與發(fā)展的重要里程碑,此次預(yù)覽版為開發(fā)者提供了
    的頭像 發(fā)表于 09-28 08:07 ?223次閱讀
    KaihongOS 4.1.2<b class='flag-5'>開發(fā)者</b>預(yù)覽版正式上線,誠(chéng)邀<b class='flag-5'>開發(fā)者</b>免費(fèi)試用!

    KaihongOS 4.1.2開發(fā)者預(yù)覽版正式上線,誠(chéng)邀開發(fā)者免費(fèi)試用!

    今日,深開鴻在2024開放原子開源生態(tài)大會(huì)上正式宣布KaihongOS 4.1.2開發(fā)者預(yù)覽版全面上線,并向全球開發(fā)者開放免費(fèi)下載。作為KaihongOS不斷創(chuàng)新與發(fā)展的重要里程碑,此次預(yù)覽版為
    的頭像 發(fā)表于 09-26 15:59 ?337次閱讀

    【新品體驗(yàn)】核桃派(WalnutPi)ZeroW開發(fā)板免費(fèi)試用

    核桃派(WalnutPi)ZeroW設(shè)計(jì)、研發(fā)和制造均來源于中國(guó),其定位是一款高性價(jià)比而且功能齊全的卡片電腦(SBC),尺寸兼容樹莓派。是一款性能非常強(qiáng)大的Linux開發(fā)板,你可以使用它上網(wǎng)、玩游戲、學(xué)習(xí)編程和創(chuàng)造自己的電子產(chǎn)品
    發(fā)表于 07-05 15:36

    玩游戲選天璣!聯(lián)發(fā)科天璣游戲技術(shù)推動(dòng)游戲生態(tài)高速發(fā)展

    近日,聯(lián)發(fā)科天璣開發(fā)者大會(huì)2024(MDDC 2024)在深圳隆重舉行,以“AI予物”為主題。作為移動(dòng)游戲技術(shù)生態(tài)的積極參與、深入探索
    的頭像 發(fā)表于 05-07 14:21 ?446次閱讀
    <b class='flag-5'>玩游戲</b>選天璣!聯(lián)發(fā)科天璣<b class='flag-5'>游戲</b>技術(shù)推動(dòng)<b class='flag-5'>游戲</b>生態(tài)高速發(fā)展

    OpenHarmony開發(fā)案例:【電影卡片

    基于元服務(wù)卡片的能力,實(shí)現(xiàn)帶有卡片的電影應(yīng)用,介紹卡片開發(fā)過程和生命周期實(shí)現(xiàn)。
    的頭像 發(fā)表于 04-15 17:53 ?1187次閱讀
    OpenHarmony<b class='flag-5'>開發(fā)案</b>例:【電影<b class='flag-5'>卡片</b>】

    OpenHarmony開發(fā)案例:【計(jì)步器卡片

    基于Stage模型實(shí)現(xiàn)帶有卡片的計(jì)步應(yīng)用,用于介紹卡片開發(fā)及生命周期實(shí)現(xiàn)。
    的頭像 發(fā)表于 04-15 09:22 ?633次閱讀
    OpenHarmony<b class='flag-5'>開發(fā)案</b>例:【計(jì)步器<b class='flag-5'>卡片</b>】

    【年度精選】2023年度top5榜單——鴻蒙開發(fā)經(jīng)驗(yàn)

    的應(yīng)用。通過學(xué)習(xí)本教程,你將了解開源鴻蒙系統(tǒng)在不同場(chǎng)景下的應(yīng)用和實(shí)踐,激發(fā)你對(duì)人工智能和開源鴻蒙系統(tǒng)的興趣和創(chuàng)造力。 2、開發(fā)一個(gè)520的HarmonyOS元服務(wù)萬能卡片DEMO 作者:李洋水蛟龍 閱讀
    發(fā)表于 01-10 17:19

    開發(fā)者】HarmonyOS實(shí)踐之應(yīng)用狀態(tài)變量共享

    # 開發(fā)者 # 【開發(fā)者】欄目是為HarmonyOS開發(fā)者提供的展示和分享平臺(tái),在這里,大家可以發(fā)表自己的技術(shù)洞察和見解,
    的頭像 發(fā)表于 12-26 21:20 ?709次閱讀
    【<b class='flag-5'>開發(fā)者</b><b class='flag-5'>說</b>】HarmonyOS實(shí)踐之應(yīng)用狀態(tài)變量共享

    開發(fā)案例分享:萬能卡片能用來玩游戲

    ,我學(xué)習(xí)并進(jìn)行HarmonyOS相關(guān)開發(fā)是為了能為鴻蒙生態(tài)建設(shè)盡一份綿薄之力,從小了講,就是為了自己的興趣。 而萬能卡片是一個(gè)讓我非常感興趣的東西。 很多時(shí)候我跟別人解釋什么是萬能
    的頭像 發(fā)表于 12-15 16:35 ?494次閱讀
    <b class='flag-5'>開發(fā)案</b>例分享:<b class='flag-5'>萬能</b><b class='flag-5'>卡片</b><b class='flag-5'>也</b><b class='flag-5'>能用來</b><b class='flag-5'>玩游戲</b>

    開發(fā)者開發(fā)案例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

    # 開發(fā)者 # 【開發(fā)者】欄目是為HarmonyOS開發(fā)者提供的展示和分享平臺(tái),在這里,大家可以發(fā)表自己的技術(shù)洞察和見解,
    的頭像 發(fā)表于 12-13 16:05 ?531次閱讀
    【<b class='flag-5'>開發(fā)者</b><b class='flag-5'>說</b>】<b class='flag-5'>開發(fā)案</b>例:使用canvas實(shí)現(xiàn)圖表系列之折線圖

    歡迎加入飛騰派開發(fā)者社區(qū),感謝每一位開發(fā)者!

    重要的合作目標(biāo),展示出了卓越的團(tuán)隊(duì)合作和專業(yè)技能,這種成功的合作對(duì)雙方的業(yè)務(wù)增長(zhǎng)和發(fā)展都起到了積極的推動(dòng)作用! 未來,期待與開發(fā)者共同攜手,推動(dòng)電子技術(shù)的發(fā)展和創(chuàng)新,為開發(fā)者社區(qū)帶來更多的價(jià)值和機(jī)會(huì)!同時(shí)
    發(fā)表于 12-11 16:11

    HarmonyOS開發(fā)案例分享:萬能卡片能用來玩游戲

    直接在桌面上玩游戲嗎? 通過對(duì)萬能卡片相關(guān)文檔的閱讀,我認(rèn)為想要實(shí)現(xiàn)一些簡(jiǎn)單的游戲應(yīng)該沒有問題,思考再三,我決定做一個(gè)井字棋小游戲,希望能給
    發(fā)表于 12-01 09:35

    一張服務(wù)卡片,三個(gè)設(shè)計(jì)原則,讓HarmonyOS元服務(wù)卡片獲得更多用戶觸點(diǎn)

    元服務(wù)是一種基于HarmonyOS API的全新服務(wù)提供方式,對(duì)于開發(fā)者來說僅需要開發(fā)一次,即可支持多終端設(shè)備運(yùn)行,以鴻蒙萬能卡片等多種呈現(xiàn)形態(tài),向用戶提供更輕量化的服務(wù)。更輕便的
    的頭像 發(fā)表于 11-17 15:43 ?441次閱讀

    【風(fēng)火輪YY3568開發(fā)板免費(fèi)體驗(yàn)】+ YY3568安裝運(yùn)行Unity的自制游戲教程范例

    。 插上USB數(shù)據(jù)線,在YY3568上設(shè)置開發(fā)者選項(xiàng)-USB調(diào)試等設(shè)置項(xiàng); 在開發(fā)電腦上,用android-sdk自帶的adb工具, adb install xxx.apk 即可實(shí)現(xiàn)apk的安裝
    發(fā)表于 11-14 11:44

    開發(fā)者福利月】因你存在,與我同行

    2015 年 10 月 30 日 我們用簡(jiǎn)單的幾行文字 開啟了這場(chǎng)與開發(fā)者們的對(duì)話 正式與大家見面 后 我們一起見證過 Google 的 18 周年 在大家的支持中達(dá)成了 30 粉絲的里程碑
    的頭像 發(fā)表于 10-30 19:35 ?244次閱讀
    【<b class='flag-5'>開發(fā)者</b>福利月】因你存在,與我同行