0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

我的第一个鸿蒙手机小游戏 数字华容道

电子工程师 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2020-12-29 10:55 次阅读

12 月 16 号 HarmonyOS 2.0 手机开发者 Beta 版已经发布了,作为“1+8+N”战略的重要入口和生态核心,怎么能少得了手机应用开发呢?今天将由深鸿会深大学习小组从零基础开发第一个 HarmonyOS 手机小游戏——数字华容道(界面略丑陋,大佬别喷)。

本个 demo 将从零基础开始完成鸿蒙小游戏 APP 在手机上的编译在项目中我们所使用到的软件为 DevEco Studio,下载地址为:

DevEco Studio 下载:
https://developer.harmonyos.com/cn/develop/deveco-studio#download

DevEco Studio 安装教程

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415

在项目中我们要实现的内容为数字华容道 APP 的开发。

打开引用首先为数字华容道的初始界面,点击开始游戏即会切换到数字华容道的游戏界面。

进入数字华容道的游戏界面显示 4*4 的方阵,方阵中分布有随意打乱的 1 至 15 的数字和一个空白方格。

方阵下方显示一个“重新开始”的按钮和一个“返回”按钮,点击“重新开始”按钮即会重新生成随意打乱的 1 至 15 的数字和一个空白方格的方阵。

点击“返回”按钮即会切换到数字华容道的初始界面,最下方有四个指示不同方向箭头的按钮,点击任一按钮或向上、下、左、右任一方向滑动,空白方格周围对应位置的方格便会随之向对应的方向移动一格。

经过若干次滑动或点击后,当所有的数字按顺序排列后,则会弹出游戏成功的界面,再滑动或点击也不会有任何变化。

01

创建项目

DevEco Studio 下载安装成功后,打开 DevEco Studio,点击左上角的 File,点击 New,再选择 New Project,选择 Phone 选项,选择默认的模板(Java 版),然后选择保存路径,将文件命名为 MyPhoneApplication(文件名不能出现中文或者特殊字符,否则将无法成功创建项目文件),最后点击 Finish。

02

实现初始界面布局

首先,我们要先实现数字华容道的初始界面,点击开始游戏即会切换到另一个空白的界面。

先在 entry>src>main>config.json 文件中最下方"launchType": "standard"的后面添加以下代码。

并且将上方的“label”:“MyPhoneApplication”修改成"label": "数字华容道",这样就实现去掉应用上方的标题栏和将应用名称改为数字华容道了。

config.json 最下面部分代码:
"orientation":"unspecified",
"name":"com.example.myphoneapplication.MainAbility",
"icon":"$media:icon",
"description":"$string:mainability_description",
"label":"数字华容道",
"type":"page",
"launchType":"standard",
"metaData":{
"customizeData":[
{
"name":"hwc-theme",
"value":"androidhwext:style/Theme.Emui.Light.NoTitleBar",
"extra":""
}
]
}

	

先将我们事先准备好的图片复制粘贴到 entry>src>main>resources>base>media 文件夹中(ctrl+c、ctrl+v 复制粘贴),并且命名为 game,点击 OK。

在 entry>src>main>resources>base>layout>ability_main.xml 中添加布局。

先将事先存在的 Text 组件删去,添加 Image 图片组件,引入我们刚才复制粘贴的图片,再添加一个 Button 按钮组件,加入唯一标识符 id 并配置好其他相应的属性:

<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">

<Image
ohos:height="match_parent"
ohos:width="match_parent"
ohos:image_src="$media:game"
ohos:layout_alignment="center"
/>

<Button
ohos:id="$+id:button_game"
ohos:height="150"
ohos:width="515"
ohos:text_alignment="center"
ohos:top_margin="-810"
ohos:left_margin="250"
/>

DirectionalLayout>

在 entry>src>main>java>com.example.myphoneapplication>slice 中右键选择 New>Java Class 增加一个空白的类以用来后面编写数字华容道的游戏界面,并且命名为 SecondAbilitySlice。

将 entry>src>main>java>com.example.myphoneapplication>slice>SecondAbilitySlice 中的代码修改成如下:

packagecom.example.myphoneapplication.slice;

importcom.example.myphoneapplication.ResourceTable;
importohos.aafwk.ability.AbilitySlice;
importohos.aafwk.content.Intent;

publicclassSecondAbilitySliceextendsAbilitySlice{

publicvoidonStart(Intentintent){
super.onStart(intent);

}

@Override
publicvoidonActive(){
super.onActive();
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}
}

	
		④entry>src>main>java>com.example.myphoneapplication>slice>MainAbilitySlice 中的 onStart 函数中添加一个按钮指向我们(2)中添加的按钮。
		

添加一个响应点击事件的函数,用 parsent 函数跳转到 SecondAbilitySlice:

packagecom.example.myphoneapplication.slice;

importcom.example.myphoneapplication.ResourceTable;
importohos.aafwk.content.Intent;
importohos.agp.components.Button;
importohos.agp.components.Component;

publicclassMainAbilitySliceextendsohos.aafwk.ability.AbilitySlice{
@Override
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);

Buttonbutton=(Button)findComponentById(ResourceTable.Id_button_game);
button.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
present(newSecondAbilitySlice(),newIntent());
}
});

}

@Override
publicvoidonActive(){
super.onActive();
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}
}

	

至此,这一部分就完成了。

03

实现数字的随机打乱

然后我们要在数字华容道的游戏界面生成随意打乱的1至15的数字和一个空白方格的方阵。

在 entry>src>main>java>com.example.myphoneapplication>slice>SecondAbilitySlice 编写代码。

先定义个一个位置布局 layout 和一个二维数组 grids,创建函数 initializeinitialize() 分别对其初始化,在 onStart 函数中调用函数 initializeinitialize():

privatefloatstarX,starY,distanceX,distanceY;
privateDirectionalLayoutlayout;
privateint[][]grids;

publicvoidonStart(Intentintent){
super.onStart(intent);

initialize();
}

publicvoidinitialize(){
layout=newDirectionalLayout(this);
grids=newint[][]{{1,2,3,4},{5,6,7,8,},{9,10,11,12},{13,14,15,0}};
}

然后定义函数 drawGrids(int[][] grids) 用于绘制 4*4 方阵和其二维数组对应的数字:

publicvoiddrawGrids(int[][]grids){
layout.setLayoutConfig((newComponentContainer.LayoutConfig(ComponentContainer.LayoutConfig.MATCH_PARENT,ComponentContainer.LayoutConfig.MATCH_PARENT)));

Component.DrawTasktask=newComponent.DrawTask(){
publicvoidonDraw(Componentcomponent,Canvascanvas){
PaintmPaint=newPaint();

mPaint.setColor(Color.GRAY);
RectFloatrect=newRectFloat(2,230,1078,1306);
canvas.drawRect(rect,mPaint);

for(introw=0;row< 4;row++){
for(intcolumn=0;column< 4;column++){
mPaint.setColor(Color.CYAN);
RectFloatrectFloat=newRectFloat(22+column*262,250+row*262,272+column*262,500+row*262);
canvas.drawRect(rectFloat,mPaint);

mPaint.setColor(Color.YELLOW);
mPaint.setTextSize(125);
if(grids[row][column]!=0){
if(grids[row][column]<10){
canvas.drawText(mPaint,String.valueOf(grids[row][column]),105+column*262,425+row*262);
}
else{
canvas.drawText(mPaint,String.valueOf(grids[row][column]),65+column*262,425+row*262);
}
}
}
}
}
};
layout.addDrawTask(task);
setUIContent(layout);
}

再定义函数 changeGrids(int[][] grids,int direction),每次接收一个方向,2 表示上移,-1 表示左移,1 表示右移,-2 表示下移,找出空白方格所在位置对应的二维数组下标,对应的方格和空白方格对应的二维数组的数值对调:

publicvoidchangeGrids(int[][]grids,intdirection){
introw_0=3;
intcolumn_0=3;
inttemp;
for(introw=0;row4;row++){
for(intcolumn=0;column4;column++){
if(grids[row][column]==0){
row_0=row;
column_0=column;
}
}
}
if(direction==-1&&(column_0+1)<= 3){
temp=grids[row_0][column_0+1];
grids[row_0][column_0+1]=grids[row_0][column_0];
grids[row_0][column_0]=temp;
}elseif(direction==1&&(column_0-1)>=0){
temp=grids[row_0][column_0-1];
grids[row_0][column_0-1]=grids[row_0][column_0];
grids[row_0][column_0]=temp;
}elseif(direction==2&&(row_0+1)<=3){
temp=grids[row_0+1][column_0];
grids[row_0+1][column_0]=grids[row_0][column_0];
grids[row_0][column_0]=temp;
}elseif(direction==-2&&(row_0-1)>=0){
temp=grids[row_0-1][column_0];
grids[row_0-1][column_0]=grids[row_0][column_0];
grids[row_0][column_0]=temp;
}
}

定义函数 createGrids(int[][] grids) 用于随机生成一个表示方向的数字,循环调用函数 changeGrids(grids,direction) 用于随机打乱二维数组对应的数字:

publicvoidcreateGrids(int[][]grids){
int[]array={-1,-2,1,2};

for(inti=0;i< 100;i++){
intrandom=(int)Math.floor(Math.random()*4);
intdirection=array[random];
changeGrids(grids,direction);
}
}

最后在 initialize() 函数中调用 createGrids(grids) 函数和 drawGrids(grids) 函数:

publicvoidinitialize(){
layout=newDirectionalLayout(this);
grids=newint[][]{{1,2,3,4},{5,6,7,8,},{9,10,11,12},{13,14,15,0}};
createGrids(grids);
drawGrids(grids);
}

至此,这一部分完成了。

04

实现滑动或点击调换数字

添加“重新开始”和“返回”按钮,在最下方添加四个指示不同方向箭头的按钮,点击任一按钮或向上、下、左、右任一方向滑动,空白方格周围对应位置的方格便会随之向对应的方向移动一格。

在 entry>src>main>java>com.example.myphoneapplication>slice>SecondAbilitySlice 编写代码。

先定义一个函数 drawButton() 用于绘制所有的按钮,四个指示不同方向箭头的按钮分别添加四个响应点击事件的函数。

分别调用对应的 changeGrids(grids,direction) 函数实现空白方格周围对应位置的方格便会随之向对应的方向移动一格,并调用 drawGrids(grids) 函数用于绘制新的方阵:
publicvoiddrawButton(){

Buttonbutton=newButton(this);
button.setText("重新开始");
button.setTextSize(100);
button.setTextAlignment(TextAlignment.CENTER);
button.setTextColor(Color.WHITE);
button.setMarginTop(1400);
button.setMarginLeft(80);
button.setPadding(20,20,20,20);
ShapeElementbackground=newShapeElement();
background.setRgbColor(newRgbColor(174,158,143));
background.setCornerRadius(100);
button.setBackground(background);
layout.addComponent(button);

Buttonbutton0=newButton(this);
button0.setText("返回");
button0.setTextSize(100);
button0.setTextAlignment(TextAlignment.CENTER);
button0.setTextColor(Color.WHITE);
button0.setMarginTop(-170);
button0.setMarginLeft(680);
button0.setPadding(20,20,20,20);
button0.setBackground(background);
layout.addComponent(button0);


ShapeElementbackground0=newShapeElement();
background0.setRgbColor(newRgbColor(174,158,143));
background0.setCornerRadius(100);

Buttonbutton1=newButton(this);
button1.setText("↑");
button1.setTextAlignment(TextAlignment.CENTER);
button1.setTextColor(Color.WHITE);
button1.setTextSize(100);
button1.setMarginLeft(500);
button1.setMarginTop(70);
button1.setPadding(10,0,10,0);
button1.setBackground(background0);
button1.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
changeGrids(grids,2);
}
});
layout.addComponent(button1);

Buttonbutton2=newButton(this);
button2.setText("←");
button2.setTextAlignment(TextAlignment.CENTER);
button2.setTextColor(Color.WHITE);
button2.setTextSize(100);
button2.setMarginTop(10);
button2.setMarginLeft(400);
button2.setPadding(10,0,10,0);
button2.setBackground(background0);
button2.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
changeGrids(grids,-1);
}
});
layout.addComponent(button2);

Buttonbutton3=newButton(this);
button3.setText("→");
button3.setTextAlignment(TextAlignment.CENTER);
button3.setTextColor(Color.WHITE);
button3.setTextSize(100);
button3.setMarginLeft(600);
button3.setMarginTop(-130);
button3.setPadding(10,0,10,0);
button3.setBackground(background0);
button3.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
changeGrids(grids,1);
}
});
layout.addComponent(button3);

Buttonbutton4=newButton(this);
button4.setText("↓");
button4.setTextAlignment(TextAlignment.CENTER);
button4.setTextColor(Color.WHITE);
button4.setTextSize(100);
button4.setMarginLeft(500);
button4.setMarginTop(10);
button4.setPadding(10,0,10,0);
button4.setBackground(background0);
button4.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
changeGrids(grids,-2);
}
});
layout.addComponent(button4);

drawGrids(grids);
}

然后添加一个函数 slideGrids() 为布局 layout 添加一个滑动事件,并获取滑动开始与结束的坐标,并计算出大致的滑动方向,分别调用对应的 changeGrids(grids,direction) 函数实现空白方格周围对应位置的方格便会随之向对应的方向移动一格,并调用 drawGrids(grids) 函数用于绘制新的方阵,并在开头添加相应的变量:

privatefloatstarX,starY,distanceX,distanceY;

publicvoidslideGrids(){
layout.setTouchEventListener(newComponent.TouchEventListener(){
@Override
publicbooleanonTouchEvent(Componentcomponent,TouchEventtouchEvent){
MmiPointpoint=touchEvent.getPointerScreenPosition(0);

switch(touchEvent.getAction()){
caseTouchEvent.PRIMARY_POINT_DOWN:
starX=point.getX();
starY=point.getY();
break;
caseTouchEvent.PRIMARY_POINT_UP:
distanceX=point.getX()-starX;
distanceY=point.getY()-starY;
break;
}
if(gameover()==false){
if(Math.abs(distanceX)>Math.abs(distanceY)){
if(distanceX>200){
changeGrids(grids,1);
}elseif(distanceX< -200){
changeGrids(grids,-1);

}
}elseif(Math.abs(distanceX)< Math.abs(distanceY)){
if(distanceY>200){
changeGrids(grids,-2);
}elseif(distanceY< -200){
changeGrids(grids,2);
}
}
}
drawGrids(grids);

returnfalse;
}
});
}

最后在 initialize() 函数中调用 slideGrids() 函数和 drawButton() 函数:

publicvoidinitialize(){
layout=newDirectionalLayout(this);
grids=newint[][]{{1,2,3,4},{5,6,7,8,},{9,10,11,12},{13,14,15,0}};
createGrids(grids);
slideGrids();
drawButton();
drawGrids(grids);
}

至此,这一部分完成了

05

实现游戏成功界面

点击“重新开始”按钮即会重新生成随意打乱的 1 至 15 的数字和一个空白方格的方阵,点击“返回”按钮即会切换到数字华容道的初始界面,经过若干次滑动或点击后,当所有的数字按顺序排列后,则会弹出游戏成功的界面,再滑动或点击也不会有任何变化。

在 entry>src>main>java>com.example.myphoneapplication>slice>SecondAbilitySlice 编写代码。

首先定义一个函数 drawText() 用于绘制游戏成功字样:

publicvoiddrawText(){
Texttext=newText(this);
text.setText("游戏成功");
text.setTextSize(100);
text.setTextColor(Color.BLUE);
text.setTextAlignment(TextAlignment.CENTER);
text.setMarginsTopAndBottom(-2000,0);
text.setMarginsLeftAndRight(350,0);
layout.addComponent(text);
setUIContent(layout);

}

然后定义一个函数 gameover() 用于判断二维数组的数字是否按顺序排列,当二维数组的数字按顺序排列时返回 true,否则返回 false:

publicbooleangameover(){
int[][]gameoverGrids={{1,2,3,4},{5,6,7,8,},{9,10,11,12},{13,14,15,0}};
for(introw=0;row< 4;row++){
for(intcolumn=0;column< 4;column++){
if(grids[row][column]!=gameoverGrids[row][column]){
returnfalse;
}
}
}

returntrue;
}

再在 drawButton() 函数中重新开始按钮中添加一个响应点击事件的函数,用于调用函数 initialize() 实现重新生成随意打乱的 1 至 15 的数字和一个空白方格的方阵,返回按钮中添加一个响应点击事件的函数,用 parsen 函数返回数字华容道的初始界面,四个指示不同方向箭头的按钮的响应点击事件的函数中增加一个判断,当函数 gameover() 返回为 false 时才调用各自的 changeGrids(grids,direction) 函数,最后增加一个判断,当函数 gameover() 返回为 true 时调用函数 drawText():

publicvoiddrawButton(){//部分代码没有贴出,可自行下载源代码查看

button.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
initialize();
}
});

button0.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
present(newSecondAbilitySlice(),newIntent());
}
});

button1.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
if(gameover()==false){
changeGrids(grids,2);
}
}
});

button2.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
if(gameover()==false){
changeGrids(grids,-1);
}
}
});

button3.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
if(gameover()==false){
changeGrids(grids,1);
}
}
});

button4.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
if(gameover()==false){
changeGrids(grids,-2);
}
}
});

if(gameover()){
drawText();
}
}

在函数 slideGrids() 函数中增加一个判断,当函数 gameover() 返回为 false 时才调用 changeGrids(grids,direction) 函数,最后增加一个判断,当函数 gameover() 返回为 true 时调用函数 drawText():

publicvoidslideGrids(){//部分代码没有贴出,可自行下载源代码查看
if(gameover()==false){
//{...}
}
if(gameover()){
drawText();
}
}

至此,整个 demo 全部完成了。

06

结语

以上就是数字华容道小游戏在手机的主要编写思路以及代码,源码将放在附件中,欢迎大家下载,感兴趣的读者可以自行跟着编写学习,相信你们也能够完成的。

此前已经在运动手表上成功开发了:HarmonyOS 运动手表游戏合并、HarmonyOS 手表游戏——数字华容道,同样是深鸿会深大小组学习完 HarmonyOS 后自行开发的一个鸿蒙 demo,详细讲述了数字华容道在鸿蒙手机上开发思路。

深鸿会深大学习小组是一群热衷于学习鸿蒙相关知识和开发鸿蒙相关应用的开发者们,我们的学习项目为:荔园 Harmony、Awesome-HarmonyOS_木棉花,同时也欢迎与各位感兴趣的读者一起学习 HarmonyOS 开发,相互交流、共同进步。

责任编辑:xj

原文标题:我的第一个鸿蒙手机小游戏!(附源码)

文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 手机游戏
    +关注

    关注

    0

    文章

    18

    浏览量

    8935
  • 鸿蒙系统
    +关注

    关注

    183

    文章

    2634

    浏览量

    66145
  • OpenHarmony
    +关注

    关注

    25

    文章

    3635

    浏览量

    16050

原文标题:我的第一个鸿蒙手机小游戏!(附源码)

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    与屏幕起发送的第一个UART数据时出现初始崩溃,但仅在第一次闪存时出现,为什么?

    其他人在闪烁并发送 UART 数据字符后遇到此问题,导致以下问题,在刷新芯片并崩溃后,在手动重置它后,它工作正常,完全没有问题,但是
    发表于 07-09 07:39

    鸿蒙的1万理由,北京中关村现大幅鸿蒙海报

    ,学习鸿蒙已成为高校和企业的热门趋势。随鸿蒙生态的飞速发展,正如张朝阳所说,现在是学习鸿蒙的黄金时期。 最后 如果大家觉得这篇内容对学习鸿蒙开发有帮助,
    发表于 05-08 20:31

    求助,用CubeMX配置占空比30%的PWM输出第一个波形不准确是为什么?

    用的是G0的芯片配置,通过抓波发现第一个波形永远与我配置的占空比不准确,但是除了第一个周期不准确外,后面的都没问题。
    发表于 03-18 07:55

    网易首款鸿蒙原生游戏《倩女幽魂》手游完成开发,商业化版本已就绪

    2023年华为开发者大会上,网易游戏不但宣布率先完成《倩女幽魂》开源鸿蒙适配,还作为第一游戏厂商参加了鸿蒙生态
    的头像 发表于 03-13 11:37 453次阅读

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    鸿蒙原生应用。 在 《使用 Taro 开发鸿蒙原生应用》 系列文章中,我们已经介绍了 鸿蒙的基本概念 和 Taro 适配鸿蒙的原理。本文作为该系列的第三篇,将正式为开发者提供
    的头像 发表于 02-02 16:09 797次阅读
    使用 Taro 开发<b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用开发指南

    招就行—鸿蒙OS 编写第一个页面

    在 Java UI 框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这两种方式创建出的布局没有本质差别,为了熟悉两种方式,我们将通过 XML 的方式编写第一个页面,通过
    的头像 发表于 01-26 18:01 714次阅读
    <b class='flag-5'>一</b>招就行—<b class='flag-5'>鸿蒙</b>OS 编写<b class='flag-5'>第一个</b>页面

    Harvard FairSeg:第一个用于医学分割的公平性数据集

    为了解决这些挑战,我们提出了第一个大规模医学分割领域的公平性数据集, Harvard-FairSeg。该数据集旨在用于研究公平性的cup-disc segmentation,从SLO眼底图像中诊断青光眼,如图1所示。
    的头像 发表于 01-25 16:52 489次阅读
    Harvard FairSeg:<b class='flag-5'>第一个</b>用于医学分割的公平性数据集

    世界上第一个石墨烯半导体的“石墨烯”究竟是什么?

    有媒体报道称有研究团队创造了世界上第一个由石墨烯制成的功能半导体(Functional Graphene Semiconductor)。
    的头像 发表于 01-23 11:26 1083次阅读

    鸿蒙千帆起】《开心消消乐》完成鸿蒙原生应用开发,创新多端联动用户体验

    《开心消消乐》已经完成鸿蒙原生应用开发,乐元素成为率先完成鸿蒙原生应用开发的 20+游戏厂商之。作为款经典
    发表于 01-03 10:22

    鸿蒙千帆起】桌游卡牌游戏品类首发!《三国杀》完成鸿蒙原生应用开发

    近日,作为鸿蒙生态游戏先锋合作伙伴之,游卡网络宣布已完成《三国杀》系列游戏鸿蒙原生应用开发,成为鸿蒙
    的头像 发表于 12-21 21:15 711次阅读
    【<b class='flag-5'>鸿蒙</b>千帆起】桌游卡牌<b class='flag-5'>游戏</b>品类首发!《三国杀》完成<b class='flag-5'>鸿蒙</b>原生应用开发

    网易游戏与华为达成鸿蒙合作

     随着众多知名游戏引擎以及第三方游戏插件达成鸿蒙原生的适配工作,HarmonyOS NEXT已展现出强大的游戏工业化实力。且华为游戏中心PG
    的头像 发表于 12-19 13:50 607次阅读

    网易游戏与华为就鸿蒙生态达成合作

    网易游戏与华为就鸿蒙生态达成合作 基于鸿蒙分布式技术、原生智能等方面能力,鸿蒙生态发展越发迅速。 12月15日网易游戏与华为就
    的头像 发表于 12-15 18:24 789次阅读

    网易游戏与华为达成鸿蒙合作

    12月15日,网易游戏宣布与华为就鸿蒙生态达成合作,将基于HarmonyOS NEXT启动鸿蒙原生应用开发。网易2001年正式成立在线游戏事业部,与广大
    的头像 发表于 12-15 14:40 865次阅读
    网易<b class='flag-5'>游戏</b>与华为达成<b class='flag-5'>鸿蒙</b>合作

    HarmonyOS开发案例分享:万能卡片也能用来玩游戏

    直接在桌面上玩游戏吗? 通过对万能卡片相关文档的阅读,认为想要实现些简单的游戏应该没有问题,思考再三,决定做
    发表于 12-01 09:35

    C语言小游戏源码大放送

    电子发烧友网站提供《C语言小游戏源码大放送.rar》资料免费下载
    发表于 11-21 10:36 1次下载
    C语言<b class='flag-5'>小游戏</b>源码大放送