首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用鸿蒙开发一款TV版的小游戏

2048大家应该都玩过,今天我们就来实现一个可以在鸿蒙系统上运行的2048小游戏,因为没有智慧屏,所以这里是在鸿蒙远程TV模拟器上运行的,大概长下面这样:

鸿蒙TV模拟器

在开始写代码之前,我们来分析下,要实现这个小游戏大概需要这么几步:

1.自定义数字卡片的样式CardView,包含设置卡片的文本数字,以及卡片的数字的颜色,以及单个卡片的背景。

2.自定义一个游戏视图GameView,所有和游戏相关的逻辑都在这个View处理,当然最重要的还是手势的监听。

3.在主页面引用自定义的GameView,以及添加一些分数,最高分,悔棋,重新开始等按钮,和游戏介绍等。

1.自定义游戏卡片CardView

PS:为什么要定一个,你不直接用鸿蒙中的控件,给它设置一个背景呢,主要是想把设置数字和数字颜色和背景的相关逻辑单独处理。

这里要介绍一下两个鸿蒙中的控件,和,用法上相当于Android中的和,用来展示文本和包裹子控件的,当然这里也不一定需要用,也可以用鸿蒙中的其他ViewGrop来代替,这里就不作过多介绍了,具体可以自行查询官网了解。我们可以分几步来实现自定义的CardView:

1.继承自,实现其中3个构造方法。

2.在初始化方法中声明一个,设置的背景。

3.定义一个方法,用来根据数字设置文本的字体颜色和背景。

PS:这里要注意下,设置背景颜色的话目前只能通过,调用其中的方法,设置RGB颜色。

2.自定义游戏视图GameView

1.继承TabLayout,实现其构造方法,其中TabLayout和Android中的很像,只是目前api还没有Android中那么多买单时也可以用来显示表哥布局,这里我们要实现TabLayout来绘制游戏的16宫格视图。

2.定义一个卡片二维数组,用来保存卡片的位置和数字信息。定义个用来记录滑动自前卡片位置的二维数组用来实现悔棋。

3.使用方法重写来监听手势的滑动,实现上下左右滑动的监听。

4.实现上下左右滑动监听的逻辑,合并数字卡片以及悔棋相关逻辑。使用来播放滑动时候的声音。

5.实现游戏结束逻辑,如果有cardMap里面有值为0即还有空格,或者当前格上下左右有相等的数字,则游戏继续,否则游戏结束

具体逻辑实现可以参考已下代码:

实现手势滑动监听,区别上下左右代码

实现上下左右滑动业务逻辑代码

游戏结束相关逻辑代码

3.在主页面应用GameView实现游戏相关的介绍,分数,以及重新开始和悔棋按钮的点击事件

新建一个MainAbilitySlice继承AbilitySlice,AbilitySlice是用来展示应用的页面的,这和Android的Activity还是有点区别的,一个页面可以有多个AbilitySlice,这和Android中的fragment有点像,但是页面在前台时只能展示一个AbilitySlice,所以说它和两者还是有点区别的。

PS:这里要注意的是由于DevEco Studio中目前xml布局还不支持自定义视图,所以我们这里只能在java代码中实现游戏页面的整体布局,还是比较麻烦的,

通过这个小项目我们可以了解到鸿蒙开发和Android 还是比较像的,当时开发这个小游戏的时候,好的的api也是不知道,由于有Android项目开发经验,以及对java sdk比较熟悉,很多东西都是慢慢试出来,比如,滑动事件的监听,卡片字体的颜色和背景的等,希望鸿蒙后面会越来越完善。

具体代码可以在我的github上查看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201123A0IA3700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券