目 录
摘 要 I
Abstract II
第一章 绪论 5
1.1选题背景及意义 5
1.1.1选题背景 5
1.1.2选题意义 6
1.2发展现状 6
1.3研究主要内容 7
第二章 关键技术分析 8
2.1开发工具及技术 8
2.1.1 Eclipse 8
2.1.2 SDK 8
2.1.3 ADT 8
2.1.4 Android 开发 8
2.2开发环境的搭建 11
2.2.1安装 JDK 与配置 Java 环境变量 11
2.2.2安装 Eclipse 11
2.2.3安装 Android SDK 11
2.2.4为Eclipse 安装 ADT 插件 11
2.2.5创建 AVD 11
第三章 系统分析 12
3.1可行性研究 12
3.1.1技术可行性 12
3.1.2经济可行性 12
3.1.3法律可行性 12
3.2总体要求 12
3.3需求分析 13
3.3.1用户需求 13
3.3.2系统功能需求与非功能需求 13
第四章 系统设计 15
4.1总体设计 15
4.1.1模块介绍 15
4.1.2体系结构设计 15
4.2详细设计 15
4.2.1系统流程的设计 15
4.2.2界面设计 16
4.2.3按钮设计 17
4.2.4算法设计 17
第五章 系统实现 19
5.1界面实现 19
5.1.1全局配置文件 19
5.1.2欢迎界面设计 20
5.1.3游戏主界面 23
5.2游戏设计 26
5.2.1卡片的实现 26
5.2.2卡片滑动的实现 29
5.2.3其他功能实现 35
第六章 系统测试 39
6.1软件测试的重要性 39
6.1软件测试的原则 39
6.2测试实例的研究与选择 40
6.3测试环境与测试条件 40
6.4主要测试过程 41
6.5.1流程测试 41
6.5.2游戏运行测试 41
6.6系统评价 41
第七章 总结 42
参考文献 43
致 谢 44
本次课题研究的基于Android系统的手机游戏等设计与实现,主要对2048游戏所实现地功能进行需求分析,对图形和系统性能进行了分析,分析图形地特点和实现地可行性。对系统地性能进行了详细地分析,同时也提出来解决性能问题地解决方案。对系统的流程,系统所需的图形文件,系统地总体架构和系统用例进行设计。通过分析、设计能更加具体地了解系统功能,对2048手机游戏所要实现 地功能和图形文件会有更深地认识。
系统主要实现以下地几个功能:关卡选择、呈现游戏界面、重新开始游戏、当前分数和最高分数、游戏帮助等功能。从总体出发,将该系统划分为三大模块:菜单设计、界面设计、和算法设计。
菜单设计实现等是在游戏界面实现,可进一步划分为三个模块,分别是:游戏帮助、重新开始、关卡选择。
界面设计可进一步划分为:主界面设计、游戏界面设计、关卡界面设计。
算法设计可化为三种:(1)当有两张卡片相同时,向它们可以碰撞地方向滑屏,卡片会移动到最底边并生成其两倍数字地卡片,并且生成一个2或4的卡片;(2)当有两张卡片相同时,且在他相同地方向有张跟它们之和地卡片,向它们可以碰撞地方向滑屏,相同地卡片会移动到无法移 动地位置并生成期两倍数字地卡片,但合成地卡片不会跟那张两倍数字地卡片合并,并且生成一个2或4的卡片(3)当界面上没有空位并且两两相邻的,卡片不相同时游戏结束。
3.2总体要求
本软件使用的开发工具主要是 Eclipse 和Android SDK,并且 SDK 版本要求 2.0 以上, 开发语言是 Java 和xml,最终产品适用于 Android 系统的智能手机。
功能要求:该设计要满足 2048 游戏的基本要求,在此基础上还应该具体另外一种模式, 即“酷车一族”,玩家可以在两种模式下随意转换。系统要求流畅,界面美观。本游戏为了设计、实现和后期维护的方便,以及系统用户使用的便利,所以必须采取一定的设计原则。其主要设计原则有:
实用性:要求本系统能够满足大众休闲娱乐的需求,因此具有良好的实用性。
简单性:在实现游戏的功能的同时,尽量让游戏操作简单易懂,这对于一个游戏来说是非常重要的。
针对性:本游戏设计是益智类的数字游戏的需求定向开发设计,所以具有专业突出和很强的针对性。
一致性:界面设计一致性:页面整体设计风格、界面元素的美观风格、摆放位置、整体页面布局和用图用色风格保持一致。变量命名规则的一致性:变量应该用统一的规则进行命名,做到任意变量均能从上下文推断其义。
2048 游戏规则:
开始时棋盘内随机出现两个数字,出现的数字仅可能为 2 或 4;
玩家可以选择上下左右四个方向,若棋盘内的数字出现位移或合并,视为有效移动; 玩家选择的方向上若有相同的数字则合并,本文转载自http://www.biyezuopin.vip/onews.asp?id=14222每次有效移动可以同时合并,但不可以连续合并;
合并所得的所有新生成数字相加即为该步的有效得分; 玩家选择的方向行或列前方有空格则出现位移;
每有效移动一步,棋盘的空位(无数字处)随机出现一个数字(依然可能为 2 或 4); 棋盘被数字填满,无法进行有效移动,游戏结束;
游戏结束出现玩家本次游戏所得分数,计分是每次合并所得数字累加,总和即为总分。
3.3需求分析
需求分析实际上是调查、评价以至肯定用户对软件需求的过程,其目的在于精华软件的作用范围,也是分析和确认软件系统构成的过程,以确定未来系统的主要成分以及它们之间的接口细节,是完整地、严密地描述应当“做什么”的一种过程。
3.3.1用户需求
本设计主要是一款益智类的手机小游戏,一次用户要求也就十分简单,仅仅满足游戏界面美观,能够正常操作,并且运行流畅即可,具有休闲娱乐的作用。
3.3.2系统功能需求与非功能需求
功能需求是必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。该游戏应当具备以下功能:欢迎界面(包括开始游戏和退出游戏按钮)、游戏界面、游戏模式选择、当前分数与最高分、重新开始游戏选项等。

package com.android.graduationpro;import com.pplo.tzfe.R;import android.app.ActionBar;
//首先必须在AndroidManifest.xml中指定
//Application或Activity的theme是Theme.Holo或其子类,否则将无法使用ActionBarimport android.app.AlertDialog;//对话框
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends FragmentActivity {Intent intent;private GameView gameView;private int score = 0;private static MainActivity mainActivity = null;private ActionBar actionBar;private MusicServer ms;public MainActivity() {mainActivity = this;}public void clearScore() {score = 0;}public void showScore() {actionBar.setTitle("当前分数: " + this.score);if (this.score > DataUtil.loadTopScore(this)) {DataUtil.saveTopScore(this, score);}actionBar.setSubtitle("最高分数 : " + DataUtil.loadTopScore(this));}//actionBar中使用setTitle和setSubTitle设置一个主标题,一个子标题public void showScore(int score) {this.score = score;actionBar.setTitle("当前分数: " + this.score);if (this.score > DataUtil.loadTopScore(this)) {DataUtil.saveTopScore(this, score);}actionBar.setSubtitle("最高分数 : " + DataUtil.loadTopScore(this));}public int getScore() {return score;}public void addScore(int addScore) {score = score + addScore;showScore();}public static MainActivity getMainActivity() {return mainActivity;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);actionBar = getActionBar();actionBar.setSubtitle("最高分数: " + DataUtil.loadTopScore(this));setContentView(R.layout.activity_main);gameView = (GameView) findViewById(R.id.gameView);/*设置actionBar的背景Resources r = getResources();Drawable myDrawable = r.getDrawable(R.drawable.buttonbg);actionBar.setBackgroundDrawable(myDrawable);          */}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//在Activity中创建ActionBar// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.remain, menu);//remain.xml指定ActionBar中的每个交互项即Actionsreturn true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    //Action按钮交互,菜单响应(重写就可以自定义了)// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.switch (item.getItemId()) {case R.id.action_refresh:new AlertDialog.Builder(this)  //Builder方法形成了一个对象链.setTitle("重新开始").setMessage("你已经得了 "+ MainActivity.getMainActivity().getScore()+ " 分!!!\n确定要重新开始游戏吗?").setNegativeButton("取消",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// TODO Auto-generated method stub}}).setPositiveButton("重新开始",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// TODO Auto-generated method stubgameView.clearData();gameView.startGame();}}).show();break;case R.id.action_name:String items[] = { "传统数字", "酷车一族" };new AlertDialog.Builder(this).setTitle("模式选择").setItems(items, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubswitch (which) {case 0:DataUtil.saveType(MainActivity.this, 0);break;case 1:DataUtil.saveType(MainActivity.this, 1);break;default:break;}gameView.reName();//切换完模式以后数据没有变化,仅仅是显示方式改变}}).show();break;case R.id.close_voice:String voice[] = { "关闭音乐", "打开音乐" };new AlertDialog.Builder(this).setTitle("音乐选项").setItems(voice, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {// TODO Auto-generated method stubswitch (which) {case 0:stopService( new Intent( "com.android.graduationpro.MusicServer" ) );break;case 1:startService( new Intent( "com.android.graduationpro.MusicServer" ) );break;default:break;}gameView.reName();}}).show();break;default:break;}return super.onOptionsItemSelected(item);}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();gameView.saveMap();}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}
}















基于Android系统的手机游戏(2048)的设计与实现相关推荐

  1. android手机界面管理系统的设计与实现(硕士学位论文).pdf,基于Android系统的手机文件管理器的设计与实现...

    摘要: 在移动终端技术不断发展的今天,智能手机支持的业务也越来越丰富,已经从简单的通话工具发展成为集PDA,互动游戏,高分辨率摄像,移动视听于一体的全功能通讯,数据处理工具,其操作系统平台也从最初的L ...

  2. 基于Android平台的手机安全助手的设计与实现

    1.研究(设计)目的意义及国内外研究状况和应用前景(附参考文献): (一)选题的目的和意义 Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞 ...

  3. 基于android地图国内外研究,开题报告-基于Android平台的手机Web地图服务设计.doc...

    开 题 报 告 毕业设计题目: 基于Android平台的 手机Web地图服务设计 浙江理工大学本科毕业设计(论文)开题报告 班 级 10计算机科学与技术1班 姓 名 课题名称 基于Android平台的 ...

  4. 基于 android 平台的百度地图手机导航设计文献综述,文献综述-基于Android平台的手机Web地图服务设计.doc...

    PAGE 1 文 献 综 述 毕业设计题目: 基于Android平台的 手机Web地图服务设计 PAGE 4 PAGE \* MERGEFORMAT 1 基于Android平台的手机Web地图服务设计 ...

  5. 基于android失物招领系统实训报告,基于Android系统的失物招领平台的设计与实现论文.doc...

    PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 3 毕业设计(论文)任务书 毕业设计(论文)题目: 基于Android系统的失物招领平台的设计与实现 毕业设计(论文)要 ...

  6. 基于android平台的手机游戏的设计与实现,基于Android平台手机游戏社区的设计与实现...

    摘要: 在移动终端性能的不断提高和移动互联网的不断普及,SNS社区以及不再只停留在电脑上,逐渐的走进了手机里,与以往的社区相比,手机社区有更好的实时性,以及能够更方便的提供LBS服务功能.目前每个社区 ...

  7. 基于Android Studio的五子棋游戏的简单设计

    [摘要]: 随着时代的发展,现代科技的飞跃,我们的日常娱乐生活变得丰富多彩.而手机游戏被业内人士称为继通信之后的有一座"金矿",手机休闲娱乐应用将成为PC休闲娱乐之后又一重要业务增 ...

  8. android小助手,基于Android平台的手机小助手的设计与实现

    摘要: 随着移动通信技术和手机软件市场的高速发展,Android智能手机功能也越来越强大,手机管理面临着新的挑战.表现在出现了很多新的问题,诸如手机安全问题.通信安全问题和应用程序管理问题等,矛盾越来 ...

  9. 基于android系统的音乐播放器,基于Android系统的音乐播放器软件设计与实现.doc

    基于Android平台的音乐播放器 The Development of Mobile Music Player Based on Android platform system 学生学号: 学生姓名 ...

最新文章

  1. centos7安装JDK1.7
  2. python私有函数
  3. HTML5学习笔记(十四):变量作用域
  4. linux启动spark命令,在linux上安装spark
  5. 用requests获取网页源代码 python-Python3使用requests包抓取并保存网页源码的方法
  6. android ------- TCP/IP
  7. php设计模式之——建造者模式
  8. 【OJ1768】最大子矩阵
  9. Linux当前终端走代理ip
  10. 阻滞增长模型求解_阻滞增长模型logistic模型.ppt
  11. ZED 视频 SVO 转换 其他格式
  12. 在這個神奇的國度找個正常點兒的DNS都很困難
  13. win10自动修复系统
  14. 【图像分割】基于形态学重建和过滤改进FCM算法(FRFCM)实现图像分割matlab代码
  15. 计算机应用最普遍的汉字字符编码是什么,计算机中,目前最普遍使用的汉字字符编码是__________...
  16. deepin20系统安装VirtualBox
  17. 从零开始制作基于Unity引擎的宝石消消乐(三)
  18. ASP.NET -- WebForm -- .aspx与.aspx.cs文件
  19. 理想与现实的巨大差距
  20. android ViewPager制作广告栏

热门文章

  1. 利用Python使基金定投收益最大
  2. 【二】微信开发中的https
  3. 使用Postman玩转接口测试
  4. 中国实验室管理系统行业研究与未来预测报告(2022版)
  5. ElasticSearch - 简介
  6. 2022年中国研究生数学建模等待成绩的心路历程
  7. 《啥是佩奇》里的那些心酸事实
  8. 傻妞web数据管理插件
  9. 微信订单尾号夺宝php源码,H5最新尾号夺宝源码黑色版 订单号尾数夺宝程序源代码...
  10. Python爬虫实战之爬取网站全部图片(二)