zoukankan      html  css  js  c++  java
  • 屌丝也能开发安卓版2048(App Inventor)

    想编写安卓游戏。java太难。来试试App Inventor。尽管有人觉得他是中学生的玩具,可是也能编写2048这种火爆游戏,不须要太复杂的算法。


    整个游戏有几个模块:
    一、游戏初始化

    数列转化为图形。使用了canvas和精灵,相相应list,这里注意精灵位置是固定的,仅仅是更改图片,多少分,就对于n.jpg,0分是底色图片。左右移动,使用了flung推断,绝对值推断,水平速度和垂直速度哪个大。用来推断是左右移动还是上下移动。


    二、计分模块

    一般计分在合并处添加,最高分用了tiny db。游戏结束时进行推断。游戏開始时计分清0


    三、移动模块(核心)
    移动模块是4*4矩阵的移动,先简化解决左右移动,进一步简化为4*1的矩阵,这里用到list。


    首先推断0000,不移动。true、false推断。

    其次推断向右移动。通过观察发现规律,2000变为0002,2480变为0248,2040变为0024,第4位是0。去掉后放到第1位。

    循环最多3次。

    假设第4位不是0,从第3位是0。最多循环2次。第2位是0,1次。相同的能够解决向左移动。

    然后扩展到4*4.用foreach循环。

    攻克了左右移动,開始解决上下移动。

    左右移动本质上是矩阵的旋转。如1234

    1234
    1234
    1234
    变为
    4444
    3333
    2222
    1111
    因此能够通过行和列的转换,得到新的list。上下移动变成左右移动。注意的是每一个方向移动都会同一时候影响列数组和行数组,因此要相互转换。


    四、合并模块


    合并模块注意下面规则,每次仅仅合并一次,如2222,向右合并为0044。不是合并为8。

    0222向右合并为0024。

    合并主要是推断12,23,34位的list是否同样。

    如34位同样的向右合并,4位翻倍,3位移除,然后再1位上加0。

    这里须要和后面的积分模块相关联,合并的分数加上。



    五、随机添加2或4模块


    2和4的选取能够通过概率设置,比較简单


    插入位置的选取实际上在全部0的位置随机选取。这里设置zerolist保存全部为0的位置,保存依照1-16号设置。模块为list0。如5号表示第2行第1列为0。用到了商和余数的推断。模块为add。


    六、游戏结束推断

    这里没有设置游戏胜利,即达到2048游戏仍然继续,游戏结束的条件有3个。


    1是没有空格。即zerolist为空
    2横向不能合并
    3纵向不能合并
    都为真时弹出选择框。
    模块对于为nomerge和gameover


    aia文件和apk下载http://bbs.appinventor.com.cn/thread-3604-1-1.html


  • 相关阅读:
    TypeError: Buffer.alloc is not a function
    node.js服务端程序在Linux上持久运行
    C#中的反射
    群要事日记
    vs2017 自定义生成规则 错误 MSB3721 命令 ”已退出,返回代码为 1。
    VP9 Video Codec
    用户手册是Yasm汇编
    更改Mysql数据库存储位置
    注册表项
    C#开发可以可视化操作的windows服务
  • 原文地址:https://www.cnblogs.com/llguanli/p/6999641.html
Copyright © 2011-2022 走看看