成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Openharmony 游戲開發(fā)探索之軍棋翻翻棋實(shí)現(xiàn)

系統(tǒng) OpenHarmony
本次重點(diǎn)在于分享我的思路和方法;具體市面上大多游戲是不是這套思路我也不知道;完全自己我構(gòu)想。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

一、引言

大家也經(jīng)常看到市面上有斗地主,麻將,飛行棋等不是很復(fù)雜的棋類游戲;然后作為沒有開發(fā)過(guò)游戲的我,在思考一款游戲是如何開發(fā)的?

于是就想在openharmony 上嘗試一下。

最近發(fā)現(xiàn)一個(gè)有意思的棋類游戲 軍棋翻翻棋。

它是軍棋游戲的拓展玩法,風(fēng)靡民間,膾炙人口。主要形式為2人游戲,輪流翻起軍棋確定陣營(yíng),最后根據(jù)軍棋玩法走棋獲勝。該游戲除了掌握軍棋的基本玩法外,還需要一些運(yùn)氣和創(chuàng)造性思維方能取勝,妙趣橫生。

二、部分效果圖

openharmony 游戲開發(fā)探索之軍棋翻翻棋實(shí)現(xiàn)-開源基礎(chǔ)軟件社區(qū)

三、實(shí)現(xiàn)思路

本次重點(diǎn)在于分享我的思路和方法;具體市面上大多游戲是不是這套思路我也不知道;完全自己我構(gòu)想。

無(wú)論是什么語(yǔ)言應(yīng)該都是分二大塊:游戲圖像的繪制,邏輯的運(yùn)算處理。

1、游戲的繪制

openharmony 里面是用canvas的繪制 把各種圖像用數(shù)據(jù)記錄下來(lái),當(dāng)前狀態(tài)及位置 最后用繪制API繪制。

保存數(shù)據(jù)的結(jié)構(gòu),無(wú)非都是 數(shù)組,二維數(shù)組,集合,HashMap,隊(duì)列這些;語(yǔ)言不同,編寫方式有點(diǎn)差異。

openharmony 是如何選擇的可以參考下文:

??openharmony 軍棋開發(fā)帶你了解如何選擇數(shù)據(jù)結(jié)構(gòu)-開源基礎(chǔ)軟件社區(qū)-51CTO.COM??

2、邏輯的運(yùn)算處理

整體代碼流程

觸摸點(diǎn)有效性 -----》移動(dòng)可行性 -----》fire有效性 -----》游戲結(jié)束or繼續(xù)。

下面是openharmony 實(shí)現(xiàn)的參考代碼。

用戶觸摸到canvas時(shí),對(duì)坐標(biāo)點(diǎn)的判斷。

Canvas(this.context)
.width('100%')
.height('100%')
.onReady(() => {
this.isReady = true
this.canvasDraw(Code.INIT, 0, 0)
}).onTouch((event) => {
let clickPoint = this.checkValidClickPoint(event)
Logger.d(TAG, `onTouch click ${JSON.stringify(clickPoint)}`)
if (clickPoint[0] != -1 && clickPoint[1] != 6) {
this.chessListManager.clickPoint(clickPoint[0], clickPoint[1])
}
})

檢測(cè)用戶手指觸摸時(shí)該點(diǎn)的有效性。

private checkValidClickPoint(event?: TouchEvent) {
let clickPoint = [-1, -1]
if (event) {
let touches = event.touches
if (touches.length == 1) {
let etype = event.type
if (etype === TouchType.Down.valueOf()) {
this.downTouchXY[0] = touches[0].x
this.downTouchXY[1] = touches[0].y
} else if (etype === TouchType.Up.valueOf()) {
let tx = touches[0].x
let ty = touches[0].y
let cx = Math.abs(this.downTouchXY[0] - tx)
let cy = Math.abs(this.downTouchXY[1] - ty)
if (cx < 30 && cy < 30) { // 有效位置
// 計(jì)算 具體的 poinrtx ,poinrty 位置
let poinrtx = Math.floor((tx - this.marginRight + this.cellColumnCentrePadding / 2) / this.cellColumnCentrePadding)
let poinrty = Math.floor((ty - this.marginTop + this.cellRowCentrePadding / 2) / this.cellRowCentrePadding)

let validXMin = this.marginRight + this.cellColumnCentrePadding * poinrtx - CHESS_WIDTH / 2 + 3
let validXMax = validXMin + CHESS_WIDTH - 6

let validYMin = this.marginTop + this.cellRowCentrePadding * poinrty - CHESS_HEIGHT / 2 + 3
let validYMax = validYMin + CHESS_HEIGHT - 6

if (tx >= validXMin && tx <= validXMax) {
if (ty >= validYMin && ty <= validYMax) {
clickPoint[0] = poinrtx
clickPoint[1] = poinrty
}
}
}
}
}
}
return clickPoint
}

返回的坐標(biāo)點(diǎn)是合理的將進(jìn)入觸摸流程。

let clickPoint = this.checkValidClickPoint(event)
Logger.d(TAG, `onTouch click ${JSON.stringify(clickPoint)}`)
if (clickPoint[0] != -1 && clickPoint[1] != 6) {
this.chessListManager.clickPoint(clickPoint[0], clickPoint[1])
}

openharmony 游戲開發(fā)探索之軍棋翻翻棋實(shí)現(xiàn)-開源基礎(chǔ)軟件社區(qū)

移動(dòng)判斷還是比較復(fù)雜的,里面還涉及到工兵的特殊性。

openharmony 游戲開發(fā)探索之軍棋翻翻棋實(shí)現(xiàn)-開源基礎(chǔ)軟件社區(qū)

大小判斷。

openharmony 游戲開發(fā)探索之軍棋翻翻棋實(shí)現(xiàn)-開源基礎(chǔ)軟件社區(qū)

四、總結(jié)

1,根據(jù)效果,其實(shí)openharmony 開發(fā)游戲類的還是達(dá)不到商用要求的。

2,本文根據(jù)該場(chǎng)景可以很好的了解openharmony的一些基礎(chǔ),如canvas的繪制,數(shù)據(jù)結(jié)構(gòu),代碼風(fēng)格。

3,openharmony 在動(dòng)畫上目前基本屬于雞肋。

4,基本按照上面思維在其他更適合游戲開發(fā)上,斗地主,麻將等其他棋類也是大同小異。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-12-14 17:42:48

軍棋工兵算法

2022-11-01 15:17:48

JS鴻蒙小游戲

2022-08-06 08:34:04

京東App適配技術(shù)棧

2022-03-17 15:28:18

五子棋HarmonyOSJSAPI

2021-10-08 14:45:22

鴻蒙HarmonyOS應(yīng)用

2021-09-17 14:47:33

鴻蒙HarmonyOS應(yīng)用

2022-08-22 17:28:34

ArkUI鴻蒙

2013-05-21 13:55:51

Android游戲開發(fā)圖像漸變特效

2013-05-21 13:33:02

Android游戲開發(fā)異步音樂播放

2022-10-31 15:22:37

JS鴻蒙小游戲

2022-09-07 15:35:49

設(shè)備開發(fā)鴻蒙

2022-02-21 15:38:57

Openharmon操作系統(tǒng)鴻蒙

2023-08-10 17:14:52

鴻蒙自定義彈窗

2022-08-23 16:07:02

ArkUI鴻蒙

2023-04-07 09:20:55

2023-06-20 15:40:58

系統(tǒng)開發(fā)鴻蒙

2022-08-04 13:55:08

拼數(shù)字小游戲鴻蒙

2023-06-13 15:00:54

環(huán)境搭建鴻蒙

2015-05-12 10:31:58

Apple Watch
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲视频二区 | 天天干视频 | 久久精品久久久 | 香蕉久久网 | 国产精品欧美一区二区 | 一级毛片播放 | 视频1区 | 天天干天天干 | 亚洲精品一 | 亚洲精品视频在线播放 | 久久99精品国产自在现线小黄鸭 | 精品国产一区二区国模嫣然 | 亚洲一区二区在线播放 | 国产中文字幕在线观看 | 成人h视频在线观看 | 国产黄色av电影 | 亚洲国产精品91 | 日韩精品免费在线观看 | 欧美中文在线 | 一级少妇女片 | av色站 | 毛片视频网站 | 91在线免费视频 | 国产伊人久久久 | 欧美色综合天天久久综合精品 | 亚洲一区二区av | 国产精品海角社区在线观看 | 欧美日韩在线视频一区二区 | 男女视频免费 | 亚洲手机视频在线 | 国产黄色电影 | 成人在线免费视频观看 | 久久这里有精品 | 免费精品在线视频 | 国产精品有限公司 | 欧美极品一区二区 | 羞羞视频网站免费观看 | 毛片视频网站 | 日本不卡在线观看 | 国产精品成人久久久久 | 亚洲精品日韩综合观看成人91 |