当前位置: 首页 > article >正文

基于Android实现的2048小游戏

基于android的2048

1 课题介绍

为什么要做这个题目呢?我去回想当初定题目时候。主要就是感兴趣,2048这款游戏刚流行起来的时候,就下过来玩。我记得第一次通关花了我10盘都不到。而且到后来玩的时候,会发现玩前期很拖剧情(因为只会生成2和4)刚有意思一不小心死了又要重来,因此也想要有一些创新。所以,在功能上别于其它的同类2048并不是很多,是在游戏机制上有所调整。使得游戏更加有惊喜和快节奏,也加大了难度,添加随机数比例如下:

数字

概率(千分之)

2

800

4

100

8

50

16

20

32

15

64

8

128

4

256

2

512

1

我花了蛮久时间去玩做好的新2048,并没有通关,有时候好气啊,突然出现的大数字会乱了节奏,但就是这样也变得更想玩了

这里放一张比较接近成功的图:

2 系统概要设计

主布局使用LinearLayout布局,布局走向是垂直。游戏主类Gameview,在安卓上设计交互方式(触控设计),实现卡片类card,然后添加2048游戏卡片,和对卡片属性的设计。再添加随机数,实现游戏逻辑(何种情况叠加,添加)游戏的计分和游戏的判定结束。

3 详细设计

将详细设计分为以下几个步骤:

  • 设计2048的游戏布局
    主布局使用LinearLayout布局,布局走向是垂直。
  • Android平台触控交互设计
    先要判断玩家手势意图,要记录开始(手点上去)的位置x,y,结束(手离开)的位置x1,y1。判断用户移动的意图,是向哪个方向,为了防止左上左下这些方向,在判断意图前,先对X=x1-x与Y=y1-y进行绝对值比较,按大的方向来。
    难点1:并且,为了防止误操作,若X,Y均小于5,视为误操作,无移动意图。
  • 游戏的卡片类
    因为2048是4*4=16格子的一个游戏,先要整体布局,并且每一个卡片里对于一个数字,(之后比较是否迭加就是getnum()卡片里的数字)之后是添加游戏卡片,首先要设计卡片宽高,根据不同手机宽高l,h,比较其中较短的,(min-10)/4作为每个格子的宽高。一共4行4列。再对格子和背景之间的颜色进行配置,使得每一个格子都可以分开来(像素间隔都10)
    难点2:num是int,直接加入看起来没错,跑起来会报错,应该num+“”加上一个空字符,则变成了字符串不会报错。
    难点3:直接设计4*4卡片没用会一排平铺开,setcdumncount(4)设计为4列可以解决。
  • 随机数的添加
    2048的游戏过程就是一开始随机生成两个位置随机的不同数字,并且在每一次的移动过后再在没有数字的位置随机添加一个随机数。在这上面,我做了创新。首先遍历所有卡片,如果数字是0,则显示空字符(一开始所有格子都先是0)将所有数字放在一个数组emptPoints里,开始前将数组清空数组,然后就是按我设计的概率可以添加随机数去取代0,可以被显示出来。
  • 实现游戏逻辑
    在触控设计之后,根据玩家意图,当做出游戏选择移动时候,实现游戏逻辑。以向左划为例:从当前位置for(x1=x+1;x1<4;x1++)如果右边有数字(大于0)做出判断a:当前为空,则右边数字替换左边(相当于把右边数字移到左边)b:如果两个卡片数字相同,则右边数字清0,左边乘以2。
  • 游戏计分
    每一次发生数字的叠加,5中的b。将叠加的数字加入score中,并且在每一次的移动后,都添加随机数。
  • 游戏判定结束
    • 当16个格子都没有空位置
    • 任意相邻位置数字均无相同
    • 判定游戏结束。

4 实验结果

5 所存在的问题及未来计划

首先,界面的美工,不同数字的颜色并没有区分开来,看起来不够舒服,希望能找到好看的颜色填充进去。其次,想要增加悔步功能,因为一局时间较长,真正好玩的部分在后面。


http://www.kler.cn/a/454451.html

相关文章:

  • 小程序基础 —— 07 创建小程序项目
  • ElasticSearch 分布式部署
  • 浅谈下雪花算法的原理,及在项目中使用需要注意哪些事项
  • 探秘仓颉编程语言:使用体验与功能剖析
  • Docker部署GitLab服务器
  • SwiftUI 入门趣谈:在文本框(TextField)内限制数字的输入
  • Effective C++ 条款 12:复制对象时勿忘其每一个成分
  • .NET 8.0 项目升级到 .NET 9.0
  • 利用Java爬虫速卖通按关键字搜索AliExpress商品
  • 流量主微信小程序工具类去水印
  • 基于大涡模拟与中尺度数值天气模式的精细化风场模拟
  • 云渲染,Enscape、D5、Lumion渲染提速教程
  • Cadence学习笔记 11 PCB中器件放置
  • 嵌入式学习-QT-Day03
  • VB.NET在 Excel 二次开发中的全面应用
  • NLP 中文拼写检测开源-03-hunspell 拼写纠正算法入门介绍 CSC
  • python实现根据搜索关键词爬取某宝商品信息
  • tcp 的重传,流量控制,拥塞控制
  • MySQL:顿悟‌了,添加索引时竟然不锁表?
  • 【Java 数据结构 】反转一个单链表
  • Visual Studio2019基础使用指南
  • 每天40分玩转Django:实操多语言博客
  • Day53 图论part04
  • Stable Diffusion绘画 | 电商设计海报
  • hhdb客户端介绍(57)
  • 7种server的服务器处理结构模型