2048小游戏开发

2048小游戏开发

记得14年的时候吧,2040小游戏非常火爆,很多公司也做了个“升级版”,当时我们是使用cocos2d-x(c++)引擎进行开发的,各种换皮玩法。不过由于当时我也是个游戏开发新手,做出来的bug不少。这游戏虽然看着简单玩着也简单,但开发起来发现难点还是有的,比如cell移动动画,必须保证可以快速不间断的操作还得保证cell移动的位置都正确,还要保证新出现的cell位置正确。现在我们来用cocoscreator引擎实现一遍,顺便优化一下逻辑。

一、主要逻辑

我们通过维护两个4x4的数组来实现,数组a存数据(0表示空格子,非0表示对应的值), 每次操作时即时更新数组的值。数组b存真实显示在屏幕上可以做动画的格子节点,每次操作后立即更新节点在数组b中的位置(和数组a对应),但格子节点存在动画,显示的更新有滞后,需要移动动画结束后再根据当前所在的格子位置去数组a取值更新自己的值(比如节点n在数组b中的位置是(0,0),则其值应该是数组a[0] [0]的值)

二、具体实现

​ 主要就是移动和判断是否可以移动的逻辑,当四个方向都不可以移动时则游戏结束。

1. 判断是否可以移动

上下左右的逻辑一样,我们拿向左移动来举例:

假设某一行是0 2 4 8四个格子,我们只需要从左侧第二个格子开始依次和前面的格子进行比较,如果前面的格子是0或者前面的格子的值和当前的格子的值相同,则该方向可以移动,否则不可以移动。因为2左侧是0,所以可以移动,代码如下:

canMoveLeft() {
   
        for (let row = 3; row >= 0; row--) {
   
            for (let col = 1; col <= 3; col++) {
   
                if (this.board[row][col] != 0) {
   
                    if (this.board<
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值