chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

開(kāi)發(fā)案例分享:萬(wàn)能卡片也能用來(lái)玩游戲

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:未知 ? 2023-12-15 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 開(kāi)發(fā)者說(shuō) #

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

前言

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

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

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

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

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

基本知識(shí)

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

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

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

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

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

1. 建立項(xiàng)目

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

wKgaomV8EOyAVDyNAAGCUiCagys985.png

2. 項(xiàng)目目錄

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

3. 預(yù)覽器

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

wKgaomV8EO2ALZ_kAAGJ2czOhA4843.png

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

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

1. 繪制棋盤(pán)

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

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

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

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

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

(1)自定義組件

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

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

這里需要在棋盤(pán)里顯示9個(gè)"gezi"組件,最簡(jiǎn)單的辦法是寫(xiě)上9遍基本同樣的代碼,但是這樣既不便于維護(hù),也不美觀(guān),因此可以使用循環(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),"刷新"用來(lái)重置棋盤(pán),而"信息"用來(lái)點(diǎn)擊進(jìn)入小游戲的說(shuō)明頁(yè)。這里對(duì)于頁(yè)面的跳轉(zhuǎn),使用的是postCardAction方法。

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


	
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)查看更多)

最后效果如下:

wKgaomV8EO2ADVb0AAHjsU6SQIw395.png

2. 項(xiàng)目邏輯

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

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

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

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

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

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)棋盤(pán)數(shù)組的第0位、第1位和第2位,這三個(gè)數(shù)字相同時(shí),說(shuō)明有一個(gè)玩家勝出了。

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

總結(jié)

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


更多熱點(diǎn)文章閱讀
  • 大佬分享!基于OpenHarmony操作系統(tǒng)無(wú)人機(jī)
  • DevEco Studio 3.1 Release | 動(dòng)態(tài)共享包開(kāi)發(fā),編譯更快,包更小
  • Cocos攜手樂(lè)元素,《開(kāi)心消消樂(lè)》成功移植OpenHarmony
  • 開(kāi)源樣例!基于小凌派RK2206的工地檢測(cè)平臺(tái)設(shè)計(jì)
  • DevEco Device Tool 3.1 Release新版本發(fā)布


原文標(biāo)題:開(kāi)發(fā)案例分享:萬(wàn)能卡片也能用來(lái)玩游戲

文章出處:【微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

原文標(biāo)題:開(kāi)發(fā)案例分享:萬(wàn)能卡片也能用來(lái)玩游戲

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    HarmonyOSAI編程萬(wàn)能卡片生成(二)

    工程保存完成后,工程中會(huì)新增如下卡片相關(guān)文件: 自定義配置邏輯代碼 邏輯代碼包含實(shí)現(xiàn)卡片數(shù)據(jù)交互和卡片事件兩類(lèi)。 卡片數(shù)據(jù)交互:觸發(fā)卡片頁(yè)面
    發(fā)表于 09-09 16:10

    HarmonyOSAI編程萬(wàn)能卡片生成(一)

    基于AI大模型理解開(kāi)發(fā)者的卡片需求信息,通過(guò)對(duì)話(huà)式的交互智能生成HarmonyOS萬(wàn)能卡片工程。 使用約束 建議從以下維度描述卡片需求: 當(dāng)
    發(fā)表于 09-08 17:09

    國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—視頻開(kāi)發(fā)案

    本文主要介紹基于創(chuàng)龍科技TLT113-EVM評(píng)估板的視頻開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境如下。
    的頭像 發(fā)表于 08-26 14:35 ?506次閱讀
    國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—視頻<b class='flag-5'>開(kāi)發(fā)案</b>例

    HarmonyOS AI輔助編程工具(CodeGenie)卡片生成

    基于AI大模型理解開(kāi)發(fā)者的卡片需求信息,通過(guò)對(duì)話(huà)式的交互智能生成HarmonyOS萬(wàn)能卡片工程。 一、 使用約束 建議從以下維度描述卡片需求
    發(fā)表于 08-12 11:04

    國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例(上)

    本文檔主要介紹基于TLT113-EVM評(píng)估板的物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例。
    的頭像 發(fā)表于 08-07 14:47 ?472次閱讀
    國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—物聯(lián)網(wǎng)模塊<b class='flag-5'>開(kāi)發(fā)案</b>例(上)

    國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—LVGL應(yīng)用開(kāi)發(fā)案

    本文主要演示基于TLT113-EVM評(píng)估板的LVGL官方案例以及應(yīng)用開(kāi)發(fā)案
    的頭像 發(fā)表于 07-29 10:06 ?527次閱讀
    國(guó)產(chǎn)!全志T113-i  雙核Cortex-A7@1.2GHz 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—LVGL應(yīng)用<b class='flag-5'>開(kāi)發(fā)案</b>例

    創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—NPU開(kāi)發(fā)案

    本文主要介紹基于創(chuàng)龍科技TL3562-EVM評(píng)估板的NPU開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境如下。
    的頭像 發(fā)表于 07-16 11:46 ?345次閱讀
    創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—NPU<b class='flag-5'>開(kāi)發(fā)案</b>例

    CodeGenie 工具功能匯總

    一、萬(wàn)能卡片生成(Service Widget) CodeGenie 基于 AI 大模型,支持通過(guò)自然語(yǔ)言描述生成 HarmonyOS 萬(wàn)能卡片工程,覆蓋 UI 布局、邏輯代碼及資源文
    的頭像 發(fā)表于 06-26 08:49 ?303次閱讀

    DevEco CodeGenie 鴻蒙AI 輔助編程初次使用

    上下文自動(dòng)補(bǔ)全。 萬(wàn)能卡片生成 :輔助創(chuàng)建 HarmonyOS 萬(wàn)能卡片,提升開(kāi)發(fā)效率。 二、插件獲取與安裝指南 獲取方式 訪(fǎng)問(wèn)華為
    的頭像 發(fā)表于 06-26 08:48 ?370次閱讀

    FA模型卡片和Stage模型卡片切換

    卡片切換 卡片切換主要包含如下三部分: 卡片頁(yè)面布局:FA模型卡片和Stage模型卡片的布局都采用類(lèi)web范式
    發(fā)表于 06-06 08:10

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(游戲

    顯示剩余時(shí)間) 好友動(dòng)態(tài)瀑布流(滑動(dòng)查看玩家相冊(cè)) 更離譜的是有個(gè)團(tuán)隊(duì)基于這個(gè)案例,三天就做出了《賽博菜園》的偷菜提醒卡片,現(xiàn)在日活漲了300%! 五、避坑指南:文檔的正確打開(kāi)方式 在開(kāi)
    發(fā)表于 06-03 18:22

    突破工業(yè)接口壁壘!ARK(方舟微)DMZ42C10S讓PLC\\\"萬(wàn)能適配\\\"成為現(xiàn)實(shí)!

    突破工業(yè)接口壁壘!ARK(方舟微)DMZ42C10S讓PLC\"萬(wàn)能適配\"成為現(xiàn)實(shí)!
    發(fā)表于 03-27 15:20

    效率大升!AI賦鴻蒙萬(wàn)能卡片開(kāi)發(fā)

    萬(wàn)能卡片,作為鴻蒙生態(tài)應(yīng)用和元服務(wù)的重要展示形式,憑借將關(guān)鍵信息和核心操作前置,實(shí)現(xiàn)服務(wù)直達(dá)、減少跳轉(zhuǎn)層級(jí)的體驗(yàn)效果,備受用戶(hù)和開(kāi)發(fā)者青睞。但傳統(tǒng)卡片的設(shè)計(jì)和編碼流程相對(duì)繁瑣,影響了
    的頭像 發(fā)表于 01-13 13:44 ?1208次閱讀
    效率大升!AI賦<b class='flag-5'>能</b>鴻蒙<b class='flag-5'>萬(wàn)能</b><b class='flag-5'>卡片</b><b class='flag-5'>開(kāi)發(fā)</b>

    ADS1293能用來(lái)采集肌電嗎?

    ADS1293能用來(lái)采集肌電嗎
    發(fā)表于 12-30 07:20

    請(qǐng)問(wèn)purepath studio能用來(lái)開(kāi)發(fā)C5000系列的DSP嗎?

    本人剛接觸Ti的DSP,想咨詢(xún)下 purepath studio 是否能用來(lái)開(kāi)發(fā) C5000系列(如TMS320C5535)的DSP 音頻處理系統(tǒng)? 開(kāi)發(fā)流程是否可以像 ADI 的 SigmaDSP 和 Sigma Studi
    發(fā)表于 10-25 06:56