屌丝也能开发安卓版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

屌丝也能开发安卓版2048(App Inventor),布布扣,bubuko.com

时间: 05-11

屌丝也能开发安卓版2048(App Inventor)的相关文章

从零開始开发Android版2048 (一)初始化界面

自学Android一个月多了,一直在工作之余零零散散地看一些东西.感觉经常使用的东西都有些了解了,可是一開始写代码总会出各种奇葩的问题.感觉还是代码写得太少.这样继续杂乱地学习下去进度也太慢了,并且学一点忘一点,效率太低.所以从今天開始.我打算实际做点小程序.在开发中不断地学习吧. 恰好近期Android上有个游戏2048比較火,所以就那这个练手吧. 由于对Android还没有太深入的了解,所以我写的东西都会比較基础,所以须要看一些高阶开发的朋友能够绕过了,也希望能够有高手们给我一些指导和建议,

从零开始开发Android版2048 (五) 撤销的实现

本篇的内容是,在前一篇的基础上加入了撤销的功能.撤销其实就是将当前的用户界面恢复到这次滑动值前的样子.我实现撤销的主要原理是,将每次滑动后界面上的格子和对应的数字记录下来,当然还有分数,把这些数据写入一个栈中,然后点击撤销操作的时候,将栈顶pop掉,读取下一个栈中的对象,并根据对象中存储的数据重新绘制界面. 下面是我用于存储每次界面情况的类,在这个类中保存了界面中主要的三个数据,空白格.数字格和当前的分数. package com.example.t2048; import java.util.

从零开始开发Android版2048 (三)逻辑判断

最近工作比较忙,所以更新的慢了一点,今天的主要内容是关于Android版2048的逻辑判断,经过本篇的讲解,基本上完成了这个游戏的主体部分. 首先还是看一下,我在实现2048时用到的一些存储的数据结构.我在实现时,为了省事存储游戏过程中的变量主要用到的是List. 比如说:List<Integer> spaceList = new ArrayList<Integer>();这个spaceList主要用于保存,所有空白格的位置,也就是空白格在GridLayout中的位置(从0到15)

从零開始开发Android版2048 (二)获取手势信息

今天是尝试開始Android版2048小游戏的第二天.在今天,我主要学习了怎样获取用户在屏幕滑动的手势,以及对布局进行了一些小小的完好. 获取用户操作的手势(比方向左滑.向右滑等)主要用到了GestureDetector.这个类能够帮助我们获取一些常见的用户对屏幕的操作.比如单击.双击.按压.拖动等.详细的使用说明.大家能够查API也能够去百度,或者看我之前有一篇使用GestureDetector实现的小样例(http://blog.csdn.net/xiapinnong/article/det

【热门APP用户体验分析】购物类APP之王——淘宝安卓版(二)

在上一篇的文章中,简单的介绍了一下淘宝客户端的首页的导航栏,还有一些小的细节问题,这一篇,我们还是继续剖析淘宝客户端安卓版. 我们首先还是先放出淘宝的主界面 在这个界面中,最上方是一个广告栏,可以点击进入对应的活动界面.广告栏可以手动的滑动,而且滑动体验非常好,在使用其他软件的时候,会发生左右广告栏的滑动和上下的刷新滑动出现冲突的情况,表现出来就是界面一直在颤动,但是淘宝的广告栏做的非常好,只要在广告栏的区域滑动,触摸焦点就会被锁定,不会发生手势冲突的情况,淘宝的开发者应该是重写了控件的触摸事件

史上最简单的个人移动APP开发入门--jQuery Mobile版跨平台APP开发

书是人类进步的阶梯. ——高尔基 习大大要求新新人类要有中国梦,鼓励大学生们一毕业就创业.那最好的创业途径是什么呢?就是APP.<构建跨平台APP-jQuery Mobile移动应用实战>就是一本写给没钱没身份没资历的创业小白看的APP书,看完这本书你可以拥有自己的一个APP,不用花钱就能移植到其他移动平台,支持iOS,Android,Windows Phone!!!!!!!!找个最便宜的来练手吧!  小白APP交流Q群:  348632872 清华大学出版社推出的<构建跨平台APP:j

自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器

手机端网页版app在使用下拉列表时,传统的下拉列表使用起来体验非常不好,一般做的稍好一点的交互功能界面都不会直接使用下拉列表,所以app的原生下拉列表都是弹窗列表选择,网页型app从使用体验上来当然也应该做成那样,前段时间在开发网页版app时就遇到这种需求,不仅是日期选择器,数据列表.变量列表选择等等下拉列表型需求都需要,网上找来找去只找到一款比较好的mobiscroll,不过下载比较麻烦,感觉比较奇怪的是jquery.mobile.jeasyui.mobile都没有提供这种控件,不知道为什么?

开源进销存PSI - 为什么要开发安卓app

PSI为什么要开发安卓app而不用H5? 1.如果用手机或者其他移动设备访问:http://psi.oschina.mopaas.com ,就能看到H5页面. 2.在PSI中H5方式主要用来做报表展现和以后嵌入到微信中. 3.有一种设备叫:智能手持终端,见下图(图片版权归百度百科) 目前很多这种设备,是基于WinCE的,但是越来越多的类似设备是基于安卓的了. 4.还有一个例子:收银POS机,基于安卓系统的也越来越多. 5.概括说原因就是:越来越多的外部设备是基于安卓系统的,而在进销存业务中会用到

实操UNITY3D接入91SDK安卓版

原地址:http://bbs.18183.com/thread-149758-1-1.html 本文内容为创建UNITY3D接入91SDK的DEMO的具体操作过程.本人水平有限,UNITY3D与Android如何交互的技术请大家参看雨松的博客.我的开发环境: MAC系统, ECLIPSE, UNITY4.0开发过程:1.准备要UNITY为交互Android自备的CLASS.JAR文件.   我的操作过程是:应用程序->UNTITY文件夹->UNITY->右键:显示包内容->CONT