屌丝也能开发安卓版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 |
四、合并模块
合并模块注意下面规则,每次仅仅合并一次,如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)的更多相关文章
- 从零開始开发Android版2048 (一)初始化界面
自学Android一个月多了,一直在工作之余零零散散地看一些东西.感觉经常使用的东西都有些了解了,可是一開始写代码总会出各种奇葩的问题.感觉还是代码写得太少.这样继续杂乱地学习下去进度也太慢了,并且学 ...
- 从零開始开发Android版2048 (三)逻辑推断
近期工作比較忙,所以更新的慢了一点,今天的主要内容是关于Android版2048的逻辑推断,经过本篇的解说,基本上完毕了这个游戏的主体部分. 首先还是看一下,我在实现2048时用到的一些存储的数据结构 ...
- 从零開始开发Android版2048 (二)获取手势信息
今天是尝试開始Android版2048小游戏的第二天.在今天,我主要学习了怎样获取用户在屏幕滑动的手势,以及对布局进行了一些小小的完好. 获取用户操作的手势(比方向左滑.向右滑等)主要用到了Gestu ...
- 从零開始开发Android版2048 (四) 分数、重置、结束
这一篇的内容主要是在上一篇的基础上,增加分数计算(包含当前分数和最高分数).游戏结束的推断以及游戏界面的重置这三个部分的功能. 一.分数的计算和保存 首先,2048这个游戏的分数包含 ...
- 从零開始开发Android版2048 (五) 撤销的实现
本篇的内容是,在前一篇的基础上添�了撤销的功能.撤销事实上就是将当前的用户界面恢复到这次滑动值前的样子.我实现撤销的主要原理是,将每次滑动后界面上的格子和相应的数字记录下来,当然还有分数,把这些数据写 ...
- [编译] 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行+VIM开发安卓APP
April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目录 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对应版本的二进制文件 1.3 ...
- Cocos2d-x 3.x版2048游戏开发
Cocos2d-x 3.x版2048游戏开发 本篇博客给大家介绍怎样高速开发2048这样一款休闲游戏,理解整个2048游戏的开发流程.从本篇博客你将能够学习到下面内容: 这里注明一下,本教程来自极客学 ...
- 【软件配置】JDK+AndroidStudio4.1开发安卓APP环境安装和配置教程详细
目录 一.专业名词 二.搭建前资源准备 2.1 JDK资源下载 2.2 AndroidStudio下载 三.安装 3.1 JDK安装配置 3.2 AndroidStudio安装 四.创建安卓APP工程 ...
- 中国首个 SaaS 模式的云告警平台安卓版 APP 上线
今年一月底,国内首个 SaaS 模式的云告警平台 OneAlert 正式发布了 iOS 版 App 客户端,今天上午,安卓版 App 客户端也正式上线了!每个安卓用户,无需电脑,都可以通过手机全程跟踪 ...
随机推荐
- cocos2D(六)----CCLayer
一个游戏中能够有非常多个场景,每一个场景里面又可能包括有多个图层,这里的图层一般就是CCLayer对象.CCLayer本身差点儿没什么功能.对照CCNode,CCLayer可用于接收触摸和加速计输入. ...
- ZOJ 2913 Bus Pass (近期的最远BFS HDU2377)
题意 在全部城市中找一个中心满足这个中心到全部公交网站距离的最大值最小 输出最小距离和满足最小距离编号最小的中心 最基础的BFS 对每一个公交网站BFS dis[i]表示编号为i的点到全部公交网 ...
- Boost库编译后命名方式
Boost官网的<Geting Started On Windows>(http://www.boost.org/doc/libs/1_38_0/more/getting_started/ ...
- 通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
本文将以宿主上直接写文件到VM内部为例讲解为何要注入以及如何实现 tag: qemu-ga, qemu guest agent, kvm, guest-file-write, inject 小慢哥的原 ...
- Spring《四-一》解决自动装配的问题
自动化装配使得研发减少了响应的指配工作,但是使得响应的检查难以完成. 解决方法: simple模式: <bean autowire="autodetect" dependen ...
- mybatis的二级缓存的使用
1.引入ehcache的jar包和mybatis整合ehcache的jar包: <!-- ehchache --> <dependency> <groupId>ne ...
- asp访问数据库原理以及代码
ActiveX Data Objects (ADO) 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术.可以使用 ADO 去编写紧凑简明的脚本以便连接到 Open Database Co ...
- ajax返回值
前端: <html> <head> <meta name="viewport" content="width=device-width&qu ...
- Visual Studio icon 含义
图片摘自:https://msdn.microsoft.com/en-us/library/y47ychfe.aspx
- CorelDRAW 2017通过智能笔触调整自然地绘制草图
LiveSketch 工具是CorelDRAW 2017版本中的新增功能,LiveSketch 工具适合快速草图和绘图,可以帮助您加快工作流并使您能够专注于创建流程.该工具并不预填充节点和图柄,而且无 ...