文章目录

  • 项目成员
  • 项目名称
  • 一、项目概述
  • 二、项目内容
    • 1.玩法介绍
  • 三、技术要求
    • 1.Android操作系统
    • 2.Java语言
    • 3.2048相关算法
  • 四、Android系统架构
    • 1.应用层
    • 2.应用框架层
    • 3.系统运行库层
    • 4.Linux内核层
  • 五、建设内容
    • 1.开始设计
    • 2.计分设计
    • 3.结束设计
    • 4.触控交互设计
    • 5.游戏流程设计

项目成员

向敏 202031101652
李康颖 202031101511

项目名称

2048小游戏

一、项目概述

开发这款游戏的初衷是希望用户通过简单的操作便能体会到其中乐趣,工作学习的闲暇之余可以放松身心。

项目概览图:

二、项目内容

1.玩法介绍

《2048》是一款益智类小游戏,玩法规则是:玩家控制全部方块朝同方向运动,两个同数字方块碰撞后,合并的数字为它们之和,每次操作都会随机生成2或者4数字,结果得出2048的方块则为游戏胜利。

三、技术要求

1.Android操作系统

Android具有开放性强,硬件资源丰富,方便开发的优势。
Android开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者;对于消费者来讲,最大的受益正是丰富的软件资源。
但同时也会带来更激烈的竞争,这需要我们考虑自身能否脱颖而出。

2.Java语言

Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

3.2048相关算法

2048的游戏界面可以看做是一个二维数组。我们的所有操作,实际上都是针对这一个二维数组的。我们可以将二维数组看成多个一维数组来处理,比如左右移动时一行一行的处理,上下移动时一列一列的处理。接下来以向右移动为例去实现它。

假设当前在某一行,我们希望实现数字的相加。首先将这一行读取出来,当做一维数组来处理。逐个枚举每一个数字,如果有相邻且相等的数就直接相加。这时候问题就来了,相等的数中间隔着0怎么处理?我们可以选择用一个变量记录之前的非零数,然后跳过0,继续枚举后面的数,遇到相同的再相加,最后将一整行的非零数都移到右边即可。在这里不妨换种思路,为何不先将所有的零数移动到最左边后再去执行加法呢?
读取一行数字后,我们先将所有的零存进进一个新数组的左侧,2 0 2 0 就成了 0 0 2 2。然后从最右边开始,将相同且相邻的数字相加,后一个数置0,防止相加后又参与了相加的问题;接着继续枚举下一个数字,处理完后再进行一次移0操作,然后将结果返回给二维数组。

确定了相加的算法后,继续思考其过程可以发现:数字是往玩家操作的方向堆积的,但相加的方向是反过来的。例如数字向右移动,但却是从最右边开始往左相加的;数字向上移动,但却是从最上面开始往下相加的。不管向哪个方向移动,移0和复制的操作都是一样的,因此在考虑这一块时只需要注意实现上的细微差别即可。

另外就是需要设计随机数的生成。随机数是在空白格子上随机生成的,因此要定义一个空白格子结构体,结构体内存的是空白格子在二维数组中的下标。用一个结构体数组来存储每次移动后的所有空白格子,随机挑选一个空白格子,随机生成2或者4(两者生成概率最好不要完全一样)即可。

链接: 详情请看原文

四、Android系统架构

Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从高到低分别是Android应用层,Android应用框架层,Android系统运行库层和Linux内核层。

1.应用层

Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历等一般都是使用Java进行编写。

2.应用框架层

开发人员可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统,其中包括:
视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textBoxes),按钮(buttons),甚至可嵌入的web浏览器。
内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据
资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。
通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。

3.系统运行库层

  1. 程序库
    Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:
    系统C库——一个从BSD继承来的标准C系统函数库(libc),它是专门为基于embeddedlinux的设备定制的。
    媒体库——基于PacketVideoopencore;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
    SurfaceManager——对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
    LibWebCore——一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
    SGL——底层的2D图形引擎
    3Dlibraries——基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
    FreeType——位图(bitmap)和矢量(vector)字体显示。
    SQLite——一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
  2. Android运行库
    Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
    每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。
    Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

4.Linux内核层

Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。

五、建设内容

1.开始设计

注册账号并且登录之后,点击主页面的“开始游戏”按钮,即可开始。

2.计分设计

当有数字合并时,记录此时合并的数字,加到相应的分数中。

3.结束设计

当游戏界面中没有得到2048且没有两个相同的格子时判定游戏结束。

4.触控交互设计

用户通过手指滑动屏幕,从起始位置获得水平或垂直方向的偏移量以此来判断用户意图。

5.游戏流程设计

“2048”游戏项目技术招标书相关推荐

  1. 网上图书订阅系统之(招标书,投标书)

    注意:由于是小组分工合作做的,所以我没有负责投标书板块,投标书板块有很多公式和图片,从OFFIECE复制上来转存不了,但是可以参考相应的目录结构. 招标书!!! 第一章  投标邀请 日期:2020年3 ...

  2. XXX旅游公司建立旅游胜地电子商务网站招标书

    第一部分:招标邀请 新闻网网站项目公开进行招标,先邀请有意参加本次招标活动的投标人参与本项目. 1. 项目名称:XXX旅游公司建立旅游胜地电子商务网站招标书 2. 投标须知:详见第二部分 3. 项目时 ...

  3. 怎样为用户写“招标书”

    怎样为用户写"招标书" Jackzhai 背景: 作为一名售前技术人员,编写投标用的技术文件,或者产品解决方案都是很正常的.但现在"用户越来越懒惰",尤其是国企 ...

  4. 基于6818粤嵌开发板的2048游戏项目

    小白笔记 目录 前言 一.lcd.c代码 lcd屏幕初始化 在lcd屏幕上任意一点显示颜色 关闭lcd屏幕 lcd.h 二.bmp.c代码 bmp格式 bmp图片读取 bmp.h 三.work.c部分 ...

  5. 软件项目管理第四周作业(招标书)

    小组成员:龙淼  武凡棨 一.项目概述 开发这款游戏的初衷是希望用户通过简单的操作便能体会到其中乐趣,工作学习的闲暇之余可以放松身心. 项目概览图: 二.项目内容 1.玩法介绍 <2048> ...

  6. 基于Unity的VR迷宫游戏项目技术分享

    一.项目重述 项目重述如下: 在移动端设计一个可参与的创作平台,结合计算机视觉相关技术,获取物理空间中的迷宫设计图: 将移动端获得的迷宫数据转换为三维虚拟场景,并在VR端呈现: 开发基于Unity 3 ...

  7. 计算机机房工程招标书,机房(数据中心)工程招标文件.doc

    机房(数据中心)招标文件 (技术部分) 目 录 TOC \o "1-3" \h \z \u HYPERLINK \l _Toc20402 第一章 系统配置要求 PAGEREF _T ...

  8. python实现2048游戏项目

      目录 一.源代码 二.知识记录 2.1 解包的知识 2.2 Python"主函数"标志: if __name__ == "__main__" 2.3 pyt ...

  9. 项目文档编制-招标书

    项目文档编制-招标书 在项目报名汇总表中写明竞标单位.标段.联系人及联系方式. 招标文件内容分析: 第一章.招标公告 1.介绍项目基本情况 2.投标人资格要求 3.投标报名 4.公告发布媒介 (中国采 ...

最新文章

  1. @芥末的糖----------《管理系统后台架构逻辑》
  2. 假设你有一个多层感知机网络(MLP),输入层有10个节点、一个单隐层共50个神经元,最后是一个3个神经元的输出层。请问网络的结构是什么样子的使用数学形式进行描述?
  3. matlab python比较_MATLAB与Python的比较
  4. bzoj3141: [Hnoi2013]旅行
  5. 2012届华为校园招聘机试题
  6. 计算机操作系统(4):操作系统的重要功能
  7. linux查询内存条个数,linux下查看内存条数及每根内存大小的实现方法(推荐)
  8. ubuntu下rar文件解压后文件名乱码的解决方案
  9. 20. Feature分支
  10. 有关风向及风向处理的笔记
  11. 如何彻底卸载3dmax2020_3dsmax2020卸载/安装失败/如何彻底卸载清除干净3dsmax2020注册表和文件的方法...
  12. 算法之二叉树各种遍历
  13. CentOS7定制Gnome3外观
  14. 女儿拿着小天才电话手表问我App启动流程
  15. 美国计算机编程竞赛,USACO美国计算机竞赛
  16. lisp画弯箭头_在CAD中直接用命令画箭头
  17. 以太网数据连接器行业现状调研及趋势分析报告
  18. 迅雷API批量下载巨潮年报
  19. Python爬虫仅需一行代码,熟练掌握crawl第三方库
  20. 到达时间差测量目标位置(TDOA)定位

热门文章

  1. 7-7 输出数组元素 (15分)
  2. 申请德国农工大学计算机案例,德州农工大学研究生院留学申请|录取条件|学费|奖学金_Texas A And M University Graduate_天道院校库_天道教育...
  3. 41-17 linux端口号与进程号
  4. 用python实现化学方程式配平
  5. Powerbuilder通过ODBC连接MySQL数据库
  6. MyEclipse运行项目404
  7. 小白学习之路(JavaWeb篇)之 JQuery(下)
  8. 计算机视觉算法工程师面试准备
  9. Jenkins打包IOS项目(疑难问题总结)
  10. mysql服务器无法停止_MySQL服务在Windows下无法停止和删除的解决办法详解