屌丝也能开发安卓版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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架