在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發案例分享:萬能卡片也能用來玩游戲

電子發燒友開源社區 ? 來源:未知 ? 2023-12-15 16:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

# 開發者說 #

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

前言

作為一名開發愛好者,從大了講,我學習并進行HarmonyOS相關開發是為了能為鴻蒙生態建設盡一份綿薄之力,從小了講,就是為了自己的興趣。而萬能卡片是一個讓我非常感興趣的東西。

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

通過對萬能卡片相關文檔的閱讀,我認為想要實現一些簡單的游戲應該沒有問題,思考再三,我決定做一個井字棋小游戲,希望能給各位開發者提供些開發思路。

實現效果如下:

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

基本知識

想要學習這個項目的開發,首先我們要掌握以下幾個知識:

1. HUAWEI DevEco Studio是開發工具,是華為基于IDEA開源版本打造的開發平臺,支持頁面預覽、多端模擬等功能;

2. ArkTS是目前主推的開發語言,簡潔的語法規則極大的減少了學習成本;

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

項目創建

1. 建立項目

選擇"Atomic Service"即建立一個元服務項目,點擊"Next"。

wKgaomV8EOyAVDyNAAGCUiCagys985.png

2. 項目目錄

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

3. 預覽器

展開Previewer,預覽器中可以查看頁面效果,其中Default尺寸與大部分手機的實際效果是相同的。可以方便的查看自己的UI代碼寫出來是什么效果,也可以測試交互代碼,非常方便。

wKgaomV8EO2ALZ_kAAGJ2czOhA4843.png

項目開發

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

1. 繪制棋盤

棋盤的繪制分為三個部分:

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

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

(左右滑動查看更多)

接著通過循環渲染,利用Flex布局來繪制格子,這里用到了兩個知識點:

(1)自定義組件

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

(2)循環渲染

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

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)

(左右滑動查看更多)

然后創建下方的兩個小圖標,"刷新"用來重置棋盤,而"信息"用來點擊進入小游戲的說明頁。這里對于頁面的跳轉,使用的是postCardAction方法。

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


	
if(this.resshow){
  //這里繪制一個結果提示頁面
  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();
  })
}

(左右滑動查看更多)

最后效果如下:

wKgaomV8EO2ADVb0AAHjsU6SQIw395.png

2. 項目邏輯

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

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

(左右滑動查看更多)

0代表這個格子沒有落子,1代表是"X",2代表是"O",當玩家每次落子后,這個數組中相應的數字就會改變,同時渲染棋盤。

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

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]];

(左右滑動查看更多)

簡單解釋一下,比如第一個[0,1,2],指的就是,當棋盤數組的第0位、第1位和第2位,這三個數字相同時,說明有一個玩家勝出了。

每次落子后執行_Check方法,對勝利的每一種情況進行循環,檢查當前棋盤是否符合其中的任意一種勝利條件,當然還有一個條件,那就是要把0排除在勝利條件外,因為0代表的是沒有落子。如果9個格子都填滿了,卻沒有觸發勝利條件的話,則視為平局。

總結

萬能卡片的潛力實際上是非常巨大的,目前市面上我發現大部分的卡片主要用來進行信息的展示,還需要在"交互"或者"可玩性"上繼續挖掘,希望這篇文章能給大家帶來一點啟發,期待出現更多好玩的萬能卡片。


更多熱點文章閱讀
  • 大佬分享!基于OpenHarmony操作系統無人機
  • DevEco Studio 3.1 Release | 動態共享包開發,編譯更快,包更小
  • Cocos攜手樂元素,《開心消消樂》成功移植OpenHarmony
  • 開源樣例!基于小凌派RK2206的工地檢測平臺設計
  • DevEco Device Tool 3.1 Release新版本發布


原文標題:開發案例分享:萬能卡片也能用來玩游戲

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電子發燒友
    +關注

    關注

    33

    文章

    564

    瀏覽量

    33451
  • 開源社區
    +關注

    關注

    0

    文章

    95

    瀏覽量

    607

原文標題:開發案例分享:萬能卡片也能用來玩游戲

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    鴻蒙5開發寶藏案例分享---一多開發實例(游戲

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

    效率大升!AI賦鴻蒙萬能卡片開發

    萬能卡片,作為鴻蒙生態應用和元服務的重要展示形式,憑借將關鍵信息和核心操作前置,實現服務直達、減少跳轉層級的體驗效果,備受用戶和開發者青睞。但傳統卡片的設計和編碼流程相對繁瑣,影響了
    的頭像 發表于 01-13 13:44 ?677次閱讀
    效率大升!AI賦<b class='flag-5'>能</b>鴻蒙<b class='flag-5'>萬能</b><b class='flag-5'>卡片</b><b class='flag-5'>開發</b>

    萬能轉換開關的作用有哪些

    萬能轉換開關是一種廣泛應用于工業自動化、電力系統、機械設備等領域的電氣元件。它具有多種功能和優點,能夠實現對電路的控制、保護和轉換。 電路控制功能 萬能轉換開關最基本的作用是對電路進行控制。它可
    的頭像 發表于 08-20 10:18 ?2842次閱讀

    萬能轉換開關的定位結構一般采用哪些

    直接影響到開關的穩定性、可靠性和使用壽命。 一、萬能轉換開關定位結構的類型 1.1 機械式定位結構 機械式定位結構是萬能轉換開關中最常見的一種定位方式,它主要依靠機械結構的相互作用來實現開關的定位。機械式定位結構主要
    的頭像 發表于 08-20 10:12 ?5850次閱讀

    萬能轉換開關是什么的主令電器

    萬能轉換開關,作為一種高度靈活多變的主令電器,在電力工程及工程技術領域扮演著重要角色。其英文名稱為CAM switch,即Highly Versatile Change-Over Switch
    的頭像 發表于 08-20 10:11 ?2992次閱讀

    萬能斷路器參數設置的基本原則

    萬能斷路器是一種廣泛應用于電力系統、工業自動化和建筑電氣等領域的保護和控制設備。它具有過載保護、短路保護、欠壓保護等多種功能,能夠有效地保護電氣設備和線路的安全運行。為了確保萬能斷路器的正常工作
    的頭像 發表于 08-14 15:50 ?1807次閱讀

    萬能斷路器跳閘后如何復位

    萬能斷路器是一種廣泛應用于電力系統中的保護裝置,其主要作用是在電路發生故障時,能夠迅速切斷電路,以保護電氣設備和人身安全。然而,在實際使用過程中,萬能斷路器可能會出現跳閘現象,這時候就需要進行復位
    的頭像 發表于 07-31 15:24 ?3862次閱讀

    萬能斷路器脫扣怎么恢復

    萬能斷路器是一種廣泛應用于電力系統中的保護設備,它能夠在電路發生故障時自動切斷電源,以保護電氣設備和人身安全。在斷路器脫扣后,需要進行恢復操作,以確保電力系統的正常運行。本文將介紹萬能斷路器脫扣
    的頭像 發表于 07-31 15:22 ?4080次閱讀

    萬能斷路器合不上閘的原因

    以下是萬能斷路器合不上閘的原因的主要內容: 萬能斷路器的基本原理和功能 萬能斷路器是一種用于保護電力系統的設備,可以自動切斷故障電路,以防止設備損壞和事故的發生。 萬能斷路器的主要功能
    的頭像 發表于 07-31 15:21 ?3501次閱讀

    萬能斷路器參數如何設置

    萬能斷路器是一種廣泛應用于電力系統、工業自動化和建筑電氣領域的電氣設備,其主要功能是在電路中起到過載、短路、欠壓等保護作用。正確設置萬能斷路器參數對于確保設備安全運行和提高系統可靠性具有重要意義
    的頭像 發表于 07-31 15:19 ?3697次閱讀

    萬能式斷路器怎么調電流大小

    萬能式斷路器(Universal Circuit Breaker)是一種廣泛應用于電力系統、工業自動化和建筑電氣領域的電氣保護設備。它具有過載保護、短路保護和欠壓保護等多種功能,能夠有效地保護電路
    的頭像 發表于 07-31 15:06 ?3202次閱讀

    簡述萬能電橋測量電容的步驟

    萬能電橋是一種測量電感和電容的儀器,具有測量范圍廣、精度高、操作簡便等特點。在測量電容時,萬能電橋可以準確地測量出電容的值,為電子電路設計和維修提供了重要的參考數據。下面介紹萬能電橋測量電容的步驟
    的頭像 發表于 07-26 09:58 ?1861次閱讀

    python函數的萬能參數

    我們通過一個簡單的事例來展示一下函數的萬能參數,我們先寫一個最簡單的函數。
    的頭像 發表于 07-17 14:56 ?577次閱讀
    python函數的<b class='flag-5'>萬能</b>參數

    AG32的“萬能管腳”

    推薦新設計了,也就是說原廠停產這款芯片已經進入倒計時了。客戶聽說我們的MCU是“萬能管腳”的,所以想試一試看能否替換。AG32的確是目前MCU產品中最接近于“萬能
    的頭像 發表于 07-09 10:00 ?78次閱讀
    AG32的“<b class='flag-5'>萬能</b>管腳”

    【新品體驗】核桃派(WalnutPi)ZeroW開發板免費試用

    核桃派(WalnutPi)ZeroW設計、研發和制造均來源于中國,其定位是一款高性價比而且功能齊全的卡片電腦(SBC),尺寸兼容樹莓派。是一款性能非常強大的Linux開發板,你可以使用它上網、玩游戲、學習編程和創造自己的電子產品
    發表于 07-05 15:36
    主站蜘蛛池模板: 在线精品91青草国产在线观看 | 国外免费精品视频在线观看 | 中文一区二区在线观看 | 亚洲婷婷国产精品电影人久久 | 久久久久久久综合 | 中文字幕成人乱码在线电影 | 中国一级黄色毛片 | 日本免费网站在线观看 | 国产一卡二卡≡卡四卡无人 | 欧美 亚洲 国产 丝袜 在线 | 1024手机看片欧美日韩 | 色综合激情网 | 中文字幕一二三区乱码老 | 精品国产第一国产综合精品gif | 天堂资源在线bt种子8 | 欧美成年网站 | 狠狠色婷婷丁香六月 | 人人搞人人爽 | 免费在线观看理论片 | videosxxoo18欧美 | 操夜夜 | 日本欧美色图 | 丁香花在线视频 | 婷婷久久久五月综合色 | 四虎影城库 | 色久月| 日本特级黄录像片 | av手机在线播放 | 在线观看你懂得 | 日韩卡1卡2卡三卡四卡二卡免 | 黄色小视频免费看 | 欧美tube6最新69 | 天堂网站www天堂资源在线 | 亚洲qingse中文字幕久久 | 天天操夜操 | 香蕉蕉亚亚洲aav综合 | 在线精品视频成人网 | 天天看片夜夜爽 | 日韩欧免费一区二区三区 | 亚洲天堂伦理 | 日本内谢69xxxx免费 |