摘 要
跟着经济的开展,生活节拍的不竭加快,人们的生活压力也不竭加重,而轻松益智游戏对缓解生活压力,调理情感具有重要意义。
《2048》益智小游戏在2014年发布出来后,敏捷在网上走红,现现在已延伸出了后宫版、朝代版、六边形版多种形式,而我将创建出属于我本身的版本。
本文接纳JAVA语言开发了《2048》小游戏,并在Android平台与实机上运行,游戏颠末图形界面的处置,以差别颜色显示差别的数字或文字,游戏不只有最传统的数字弄法,也交融了朝代形式,让对数字叠加痴迷的玩家,过足瘾,也让那些喜好汗青的伴侣能够通过游戏来稳固汗青的开展。该游戏还有查看当前得分,查看更高分,重玩,退出等功用,App界面简洁了然,操做曲不雅且简单。关于游戏的各部门功用都停止了测试,测试成果一般,目前没有发现问题。
关键字:Android;Java;游戏;益智
目次href="https://zhuanlan.zhihu.com/write#_Toc483475449">第一章 项目布景
="https://zhuanlan.zhihu.com/write#_Toc483475450">1.1课题概述
1.2涉及手艺和理论根底
1.2.1 Java语言
1.2.2 Android操做系统
1.2.3 开发平台介绍
href="https://http://zhuanlan.zhihu.com/write#_Toc483475455">第二章 用户需求阐发
2.1用户功用描述
2.1.1 2048游戏设想功用模块申明如下
2.1.2 游戏对象
"https://zhuanlan.zhihu.com/write#_Toc483475459">2.2 开 *** 况
"https://zhuanlan.zhihu.com/write#_Toc483475460">2.3 开发东西
href="https://zhuanlan.zhihu.com/write#_Toc483475461">第三章 概要设想
3.1游戏次要流程
3.2 流程构造图
3.2.1界面规划
3.2.2游戏实现(逻辑、代码)
href="https://zhuanlan.zhihu.com/write#_Toc483475470">第四章 详细设想
4.1游戏逻辑构造
4.2 次要用户设想界面与手艺讲解
4.2.1界面规划
4.2.2游戏实现(逻辑、代码)
4.2.3形式切换
href="https://zhuanlan.zhihu.com/write#_Toc483475480">第五章 游戏测试
="https://zhuanlan.zhihu.com/write#_Toc483475481">5.1需求阐发
="https://zhuanlan.zhihu.com/write#_Toc483475482">5.2测试方案
="https://zhuanlan.zhihu.com/write#_Toc483475484">5.4测试成果
href="https://http://zhuanlan.zhihu.com/write#_Toc483475485">第六章 开发经历及收成
href="https://zhuanlan.zhihu.com/write#_Toc483475486">第七章 称谢
href="https://zhuanlan.zhihu.com/write#_Toc483475487">第八章 参考材料
第一章 项目布景 1.1课题概述挪动互联网时代的降临,间接促进了搭载智能操做系统、具有强大扩展性的智妙手机、平板电脑等挪动末端财产的兴旺开展。而从便携性和随身性那两方面来考虑,电脑所带来的体验已经不克不及和手机相提并论了。
现现在Android、苹果等各智妙手机已经根本占领整个手机市场,从而使得更多应用的呈现,此中手机游戏应用在此中占领次要的位置。
2048小游戏,便曾一度风行,而且从最后的4*4气概的数字形式,不断向前延伸演化,现现在已呈现多种形式的2048,此中有由具有进化或包罗关系的对象来替代根本的2048的加法运算从而增加兴趣性,又有扩大4*4的形式向5*5,6*6的形式演化从而降低难度,增加游戏的可玩性,也有缩小4*4的形式向3*3的形式演化从而增加游戏的难度,增加游戏的挑战性。
此次结业设想即是从2048的演化得到的启迪,从而设想的一款具有小我特色的2048益智小游戏,该游戏通过简单和易操做的Android游戏来帮忙手机用户打发时间。而且该游戏集数字形式和朝代形式于一身的2048使游戏即能够通过数字叠加来开动大脑,又能够进修朝代汗青开展,玩家开动大脑,造定战略来获得更好的成就,更是让用户可以在任何情况任何时间都可以放松表情和娱乐身心充实展现了在娱乐中进修的理念。
1.2涉及手艺和理论根底 1.2.1 Java语言Java是由Sun Microsystems公司推出的Java面向对象法式设想语言(以下简称Java语言)和Java平台的总称。Java由James Gosling和同事们配合研发,并在1995年正式推出。Java最后被称为Oak,是1991年为消费类电子产物的嵌入式芯片而设想的。1995年改名为Java,并从头设想用于开发Internet应用法式。用Java实现的HotJava阅读器(撑持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。从此,Java被普遍承受并鞭策了Web的敏捷开展,常用的阅读器均撑持Javaapplet。另一方面,Java手艺也不竭更新。Java自面世后就十分流行,开展敏捷,对C++语言构成有力冲击。在全球云计算和挪动互联网的财产情况下,Java更具备了显著优势和宽广前景。2010年Oracle公司收买Sun Microsystems。
图1-1 Java 图标
1.2.2 Android操做系统1)简介
Android是一种基于Linux的自在及开放源代码的操做系统,次要利用于挪动设备,如智妙手机和平板电脑,由Google公司和开罢休机联盟指导及开发。尚未有同一中文名称,中国大陆地域较多人利用“安卓”或“安致”。
图1-2 Android 图标
Android操做系统最后由Andy Rubin开发,次要撑持手机。2005年8月由Google收买注资。2007年11月,Google与84家硬件造造商、软件开发商及电信营运商组建开罢休机联盟配合研发改进Android系统。随后Google以Apache开源答应证的受权体例,发布了Android的源代码。第一部Android智妙手机发布于2008年10月。Android逐步扩展到平板电脑及其他范畴上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额初次超越塞班系统,跃居全球第一。 2013年的第四时度,Android平台手机的全球市场份额已经到达78.1%。[1] 2013年09月24日谷歌开发的操做系统Android在迎来了5岁生日,全世界接纳那款系统的设备数量已经到达10亿台。
系统架构
android的系统架构和其操做系同一样,接纳了分层的架构。从架构图看,android分为四个层,从高层到低层别离是应用法式层、应用法式框架层、系统运行库层和linux核心层。
图1-1 Android系统架构图
1、应用法式层
Android平台不单单是操做系统,也包罗了许多应用法式,诸如SMS短信客户端法式、德律风拨号法式、图片阅读器、Web阅读器等应用法式。那些应用法式都是用Java语言编写的,而且那些应用法式都是能够被开发人员开发的其他应用法式所替代,那点差别于其他手机操做系统固化在系统内部的系统软件,愈加灵敏和个性化。
2、应用法式框架层
应用法式框架层是我们处置Android开发的根底,良多核心应用法式也是通过那一层来实现其核心功用的,该层简化了组件的重用,包罗Activity Manager(活动办理器)、Window Manager(窗口办理器)、Content Provider(内容供给器)、View System(视图系统)、Notification Manager(布告办理器)、Package Manager(保证理器)、Telephony Manager(德律风办理器)、Resource Manager(资本办理器)、Location Manager(位置办理器)、XMPP Service(XMPP办事)十个部门。开发人员能够间接利用其供给的组件来停止快速的应用法式开发,也能够通过继承而实现个性化的拓展。
3)系统运行库层
从图中能够看出,系统运行库层能够分红两部门,别离是系统库和Android运行时,别离介绍如下:
a)系统库
统库是应用法式框架的支持,是毗连应用法式框架层与Linux内核层的重要纽带。其次要分为如下几个:Surface Manager、Media Framework(多媒体库)SQLite、OpenGL|ES、FreeType、WebKit、SGL、SSL、Libc。
b)Android运行时
Android应用法式时接纳Java语言编写,法式在Android运行时中施行,其运行时分为核心库和Dalvik虚拟机两部门。
4)Linux内核层
Android是基于Linux2.6内核,其核心系统办事如平安性、内存办理、历程办理、网路协议以及驱动模子都依赖于Linux内核。
1.2.3 开发平台介绍2048 Android游戏开发平台为Eclpipse:4.2.0+ADT:22.3.0+JDK:1.8.0,模仿器测试平台为Android SDK模仿器,实机测试平台为SM-A5000。
Eclipse
Eclipse是出名的跨平台的自在集成开 *** 况(IDE)。最后次要用来Java语言开发,通过安拆差别的插件Eclipse能够撑持差别的计算机语言,好比C++和Python等开发东西。Eclipse的自己只是一个框架平台,但是浩瀚插件的撑持使得Eclipse拥有其他功用相对固定的IDE软件很难具有的灵敏性。许多软件开发商以Eclipse为框架开发本身的IDE。
ADT
ADT(Android Development Tools)即安卓开发东西,为Android开发供给开发东西的晋级或者变动,简单理解为在Eclipse下开发东西的晋级下载东西。
JDK
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产物。自从Java推出以来,JDK已经成为利用最普遍的Java SDK。JDK 是整个Java的核心,包罗了Java运行情况,Java东西和Java根底的类库。
href="">第二章 用户需求阐发设想游戏的游戏应该满足根本的游戏需求,操做界面起首简洁了然,用户一目了然,而且规则申明简单易懂。
游戏起头:游戏界面肆意位置呈现2个值,数字形式时呈现的数字别离为2或者4,随机数2和4的比例为9:1;朝代形式时,呈现的2个随机值均为“夏”。
游戏完毕:当棋盘上所有位置被填满,而且相邻位置的值不不异,无法停止位移或合并。
游戏形式:第一种是数字形式,数字形式也是无尽形式,只要契合游戏完毕规则时才会完毕;另一种是朝代形式,当游戏从头“新中国”时,游戏成功。
随机数:玩家能够通过上下摆布四个标的目的停止滑动,若棋盘上数字呈现位移或合并,即视为有效挪动,而且在随机位置呈现新的随机数。
分数显示:每当有合并时,便将合并所得数字累计到当前分数上,而且比力当前数字和更高分,若是当前得分大于更高分,则更新更高分。
2.1用户功用描述 2.1.1 2048游戏设想功用模块申明如下A.界面规划
B.游戏实现(逻辑、代码)
C.形式切换:通俗数字形式、朝代形式
D.当前分、更高分
E.从头起头
F.菜单设置
2.1.2 游戏对象适用于所有拥有安卓机,而且安卓版本在4.4以上的手机用户,尤其是对数字叠加或对中国朝代汗青有兴趣的人,以及想要领会若何开发2048游戏的初学者或者工程师。
2.2 开 *** 况开发平台:Windows7
2.3 开发东西法式的编写软件是:Eclpipse:4.2.0。
第三章 概要设想 3.1游戏次要流程A.界面规划,B.游戏实现,C.形式切换:通俗数字形式、朝代形式,D.当前分、更高分,E.从头起头,F.菜单设置
游戏的次要流程图,如图3-1 2048游戏流程图
图3-1 2048游戏流程图
3.2 流程构造图 3.2.1界面规划如图3-2界面设想流程图
图3-2界面设想流程图
3.2.2游戏实现(逻辑、代码)如图3-3游戏实现设想流程图
图3-3游戏实现设想流程图
3.2.3形式切换如图3-4形式切换设想流程图
图3-4形式切换设想流程图
3.2.4当前分、更高分如图3-5当前分、更高分设想流程图
图3-5当前分、更高分设想流程图
3.2.5从头起头如图3-6从头起头设想流程图
图3-6从头起头设想流程图
3.2.6菜单设置如图3-7菜单设置流程图
图3-7菜单设置流程图
第四章 详细设想 4.1游戏逻辑构造按照游戏功用设想的要求以及功用模块的划分,关于游戏逻辑构造停止阐发,得出如图3-2 2048游戏逻辑流程图。
图3-8 2048游戏逻辑流程图
4.2 次要用户设想界面与手艺讲解 4.2.1界面规划图4-1数字形式 图4-2朝代形式
游戏次要接纳LinearLayout(线性规划)、RelativeLayout(相对规划)、GridLayout(网格规划)。
起首游戏界面次要分为上下2个部门用一个线性规划包裹起来,上面部门用相对规划来存放形式切换的ImageView、显示当前得分、更高分和重来按钮。下面部门利用了网格规划,并将其绑定GameView类,用来显示游戏的主模块。
当前得分、更高分的文字和分数显示用线性规划包裹起来,此中圆角款式是通过设置线性规划的布景android:background="@drawable/circular"挪用一个circular.xml文件,来设置布景颜色和圆角半径。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#bcafa1" />
<corners android:radius="10dip" />
</shape>
4.2.2游戏实现(逻辑、代码)卡片类:用来显示卡片的文本以及布景颜色,此中分为2种情况,数字和文字,数字差别显示的文本以及布景颜色就差别,获取形式type,
int type = MainActivity.getMainActivity().getType();当type为0时,卡片上显示数字,type为1时,显示文字。
public void setNum(int num) {
this.num = num;
String text = "";
switch (num) {
case 0:
text="";
label.setBackgroundColor(Color.rgb(204, 192, 179));
break;
case 2:
text="夏";
label.setBackgroundColor(Color.rgb(238, 228, 218));
break;
case 4:
text="商";
label.setBackgroundColor(Color.rgb(237, 224, 200));
break;
case 8:
text="周";
label.setBackgroundColor(Color.rgb(242, 177, 121));
break;
......
default:
text ="新中国";
label.setBackgroundColor(Color.rgb(156, 76, 14));
break;
}
if (num <= 0) {
label.setText("");
} else {
label.setText(num + "");
int type = MainActivity.getMainActivity().getType();
if(type == 0){
label.setText(num + "");
}else{
label.setText(text);
}
}
}
添加随机数:起首定义一个动态数组emptyPoints来存放棋盘格上空框的坐标,遍历棋盘格上所有位置,当每个棋盘格上的数字小于或等于0时,将该坐标写入emptyPoints数组中。而且每次在停止那些操做前,必需先清空emptyPoints的数据,从头遍历添加,当type等于1时,卡片设置的数字都为2(代表文字“夏”),不然按照1:9的比例设置数字4和2。
private void addRandomNum() {
emptyPoints.clear();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
if (cardsMap[x][y].getNum() <= 0) {
emptyPoints.add(new Point(x, y));
}
}
}
Point p = emptyPoints.remove((int) (Math.random() * emptyPoints.size()));
int type = MainActivity.getMainActivity().getType();
if (type == 1) {
cardsMap[p.x][p.y].setNum(2);
} else {
cardsMap[p.x][p.y].setNum(Math.random() > 0.1 ? 2 : 4);
}
}
触控交互:该游戏次要通过用户用手指滑动屏幕,判断用户的企图。
起首,定义起始位置横坐标:startX,起始位置纵坐标:startY,手指滑动横坐标标的目的上的位移:offsetX,手指滑动纵坐标标的目的上的位移:offsetY。通过onTouch办法判断滑动标的目的。
特殊情况:1、因为人的手指在滑动标的目的会有误差,一般不会精准的向四个标的目的滑动,必定会有误差,所以要判断手指滑过标的目的的是程度标的目的仍是垂曲标的目的的企图,当程度标的目的的偏移量大于垂曲标的目的的偏移量时,表白用户是程度滑动企图,当垂曲标的目的的偏移量大于程度标的目的的偏移量,表白用户是垂曲标的目的滑动的企图。
2、因为人的手指只要滑动一段间隔才气表白用户的企图,不成能点一下屏幕或者略微动一下就暗示滑动企图,那显然不太契合现实情况,所以要定义偏移必然的间隔才气判断用户的实正企图。规定当程度标的目的的偏移间隔大于或者等于程度标的目的的偏移间隔,且当偏移小于5时,用户向上滑动,大于5使,规定向下滑动;当程度标的目的的偏移间隔大于或者等于程度标的目的的偏移间隔,且当偏移小于5时,规定用户向左滑动,若是大于5,用户向右滑动。
setOnTouchListener(new OnTouchListener() {
private float startX, startY, offsetX, offsetY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_UP:
offsetX = event.getX() - startX;
offsetY = event.getY() - startY;
if (Math.abs(offsetX) > Math.abs(offsetY)) {
if (offsetX < -5) {
swipeLeft();
} else if (offsetX > 5) {
swipeRight();
}
} else {
if (offsetY < -5) {
swipeUp();
} else if (offsetY > 5) {
swipeDown();
}
}
break;
}
return true;
}
});
数字合并:差别的滑动标的目的,施行差别的遍历挨次,以左上角第一个格子为起始点,自左向右,自上而下每个格子的坐标散布如下图。
以向右滑动为例:每一行每一行地遍历,起首从第一行起头遍历,若是第一行数据如下,
2 2 2 2 → 2 2 0 4 → 2 0 2 4 → 0 0 4 4:则从右向左起头遍历,起首用下标为3的数字和前面3个数字停止比力,以此类推。
中间操做:
1、生成一个新的数字,若是发作挪动或者合并,则生成一个数字
2、加分,若是发作合并,则加分,分值为合并得到的数字,好比 4,4 -> 8 ,即加8分
private void swipeRight() {
boolean marge = false;
for (int y = 0; y < 4; y++) {
for (int x = 3; x >= 0; x--) {
for (int x1 = x - 1; x1 >= 0; x1--) {
if (cardsMap[x1][y].getNum() > 0) {
if (cardsMap[x][y].getNum() <= 0) {
cardsMap[x][y].setNum(cardsMap[x1][y].getNum());
cardsMap[x1][y].setNum(0);
x++;
marge = true;
} else if (cardsMap[x][y].equals(cardsMap[x1][y])) {
cardsMap[x][y].setNum(cardsMap[x][y].getNum() * 2);
cardsMap[x1][y].setNum(0);
MainActivity.getMainActivity().addScore(
cardsMap[x][y].getNum());
marge = true;
}
break;
}
}
}
}
if (marge) {
addRandomNum();
checkComplate();
}
}
4.2.3形式切换图4-3形式切换
设置一个整数类型参数type,默认为0,将数字形式记为0,朝代形式记为1,当点击形式切换按钮时,便弹出提醒框若是点击否,则不做任何操做,若是点击是,则切换“形式切换”布景图,从头设置type,并重绘界面。
private int type = 0;
if (bType) {
bType = false;
text = "朝代形式";
iv.setBackgroundResource(R.drawable.game);
setType(0);
mGameView.startGame();
} else {
bType = true;
text = "数字形式";
iv.setBackgroundResource(R.drawable.bg);
setType(1);
mGameView.startGame();
}
4.2.4当前得分、更高分图4-4当前分、更高分
当前得分:每次有合并,便将当前合并所得分数累计起来,并显示在界面上。并且每当游戏从头起头,就将当前分数清空
更高分:起首新建一个BestScore类来存放数据信息
1、翻开Preferences,名称为setting,若是存在则翻开它,不然创建新的Preferences
public BestScode(Context context){
sp = context.getSharedPreferences("bestscode", context.MODE_PRIVATE);
}
2、让setting处于编纂形态
Editor editor = sp.edit();
3、存放数据
editor.putInt("bestscode", bestScode);
4、完成提交
editor.commit();
再在MainActivity主类中读取数据信息,取出数据
currentBestScore = bs.getBestScode();
最初让当前分数与更高分比力,若是更高分大于当前分数,则更新更高分,并显示出来
if (score > currentBestScore) {
currentBestScore = score;
BestScode bs = new BestScode(this);
bs.setBestScode(currentBestScore);
tv_bestScore.setText("" + currentBestScore);
}
4.2.5从头起头图4-5从头起头
当点击从头起头按钮时,弹出提醒框,若是点击否,则不做任何操做,若是点击是,则挪用起头游戏的办法,从头起头游戏,重绘游戏界面。
public void startGame() {
MainActivity.getMainActivity().clearScore();
for (int y = 0; y < 4; y++) {
for (int x = 0; x < 4; x++) {
cardsMap[x][y].setNum(0);
}
}
addRandomNum();
addRandomNum();
}
4.2.6菜单设置图4-6菜单设置
新建一个新的界面规划文件menu.xml,存放3个item
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/help"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/help"/>
<item
android:id="@+id/quit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/quit"/>
<item
android:id="@+id/about"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/about"/>
</menu>
挪用Activity中的onCreateOptionsMenu办法,引用menu.xml规划文件,添加菜单
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
菜单项监听:只要菜单中的菜单项被点击,便触发onOptionsItemSelected(MenuItem item)点击事务,item参数即为被点击的菜单项。通过id判断点击了哪个菜单项,三个菜单别离利用了三种显示办法。
当点击帮忙按钮时,挪用AlertDialog.Builder创建一个对话框,setTitle :为对话框设置题目;setMessage:为对话框设置内容;setPositiveButton:给对话框添加"我大白了"按钮,点击后返回原页面。此中通过“\u3000\u3000”来显示空格,“\n”来换行。
点击关于按钮时,挪用简易的动静提醒框Toast,提醒相关信息。
点击退出按钮时,挪用MainActivity.this.finish();来封闭法式。
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.help:
new AlertDialog.Builder(mainActivity).setTitle("帮忙")
.setMessage("\u3000\u3000"+"左上角图标可切换游戏形式,数字形式:无尽形式;朝代形式:当玩出“新中国”,则为成功。\n"+"\u3000\u3000"+"右上角图标为重来按钮,点击即可从头起头新游戏。")
setPositiveButton("我大白了",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0,int arg1) {
return;
}
}).show();
break;
case R.id.about:
Toast.makeText(MainActivity.this, "版权:刘舜琼", Toast.LENGTH_LONG).show();
break;
case R.id.quit:
MainActivity.this.finish();
break;
}
return false;
}
4.2.7手机返回键事务起首设置一个反响时间exitTime,挪用一个按键点击事务onKeyDown,第一次按下返回键时,提醒"再按一次退出法式",当2次按键时间间隔不超越2000毫秒时,则法式退出。
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(this, "再按一次退出法式", 1000).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
第五章 游戏测试 5.1需求阐发本次游戏设想是让玩家可以在肆意情况任何时间,只要Android手机在手就能玩的一款单机游戏,游戏有通俗数字形式和朝代形式,通俗形式为无尽版,只要没有满足失败规则就能够不断玩,而朝代形式是玩出“新中国”则游戏成功。玩家能够通过手指触摸屏幕,停止上下摆布的滑动来对棋盘上的数字或者朝代停止叠加。
1、数字版:游戏起头时棋盘格会在随机位置,呈现2个随机数。并且随机数只可能是2和4,而且呈现的概率为1:9。
朝代版:游戏起头时棋盘格会在随机位置,呈现2个“夏”。
2、在某一滑动标的目的上,若是有相邻2个不异的数字或者朝代,就会合并,而且在合并的同时将合并所得数字叠加到当前分数上,并且在棋盘格空框处添加一个随机数。
3、当棋盘格上没有空框而且每个数字各个标的目的相邻的数字或朝代都不不异时,游戏完毕,屏幕弹出“你好,游戏完毕。”,而且点击弹出框上的“重来”,可从头起头一盘新的游戏。
4、数字版:棋盘格上有数字2048,而且没有满足游戏完毕规则时,游戏仍然可继续。
朝代版:当棋盘格上呈现“新中国”则游戏成功,屏幕弹出“游戏成功,新中国成立了!”,而且点击弹出框上的“重来”,可从头起头一盘新的游戏。
5.2测试方案按照测试需求造定一个简单的测试方案:
游戏起头测试:屡次开启游戏,察看每一次开启游戏,在数字版下棋盘格能否有且仅有2个数字,而且对呈现的数字停止统计阐发,察看数字呈现的位置能否随机,能否以1:9的概率呈现4或者2;在朝代版下,棋盘格能否只呈现“夏”。
游戏滑动、合并测试:别离在上下摆布四个办法对对棋盘格上的数字停止挪动,察看棋盘格的数字的挪动或者叠加能否契合游戏规则。
游戏完毕测试:当棋盘格被填满,而且无法停止游戏挪动时,能否会弹出提醒框。
游戏成功测试:朝代形式下,当呈现“新中国”时能否会弹出提醒框,提醒游戏成功。
重来功用测试:点击重来,游戏界面重绘。
退出游戏功用测试:点击一次返回键游戏不会退出;点击两次返回键,若那两次点击时间间隔较长,游戏不会退出;快速点击两次返回键,游戏退出。
用户体验测试:让同窗充任用户体验游戏,并提出建议。
5.3测试施行施行测试方案,记录阐发测试成果。
5.4测试成果法式运行一般,没有发现什么错误。
第六章 开发经历及收成在此次结业设想中,我次要是利用Android平台连系JAVA语言来实现,那也是我们上课和进修中利用最多的语言之一。那个游戏固然看似简单,但是若是要深切分析整个游戏流程,也是需要许多时间和静力的。
在造做那个游戏前,我最起头做的就是玩那个游戏,究竟结果“良知知彼,方能攻无不克。”只要通过玩那个游戏,才气愈加深切领会整个游戏的流程。熟悉整个游戏,并对整个游戏停止阐发后,我才起头揣摩界面的设想、用户企图的获取、游戏逻辑的实现。游戏在实现的时候也碰到了一些困难,不外在教师的指点阐发下,才得以处理。颠末耐心的进修,最末仍是把游戏完成了,固然我的手艺有限,而且因为要上班,所以时间也有点仓皇,所以做出来的游戏比力简陋。不外仍是很高兴做出了本身的第一个游戏。
通过此次的结业设想,我对Android和Java语言的领会愈加深切,也学到了很多常识,此后我必然会愈加勤奋的进修,做到畅通领悟贯穿,在事务中进修是获取常识更好的办法,所以我以后还要多做些项目,为以后的工做开展打下根底。
href="">第七章 称谢感激我父母对我的循循善诱,教会我若何为人处事,以及不图回报的付出,他们对我学业上的撑持,让我能够毫无顾忌地向前迈进。
感激我的导师钟教师,在我法式呈现错误时,教师认实地玩了几遍游戏,为我阐发游戏逻辑,提出法式的重点难点,以及容易呈现的错误。在教师的提点下,我才气更好天文解整个项目。教师严谨详尽、一丝不苟的做风不断是我工做、进修中的楷模;循循善诱的教诲和形形 *** 的思绪赐与我无尽的启迪。
感激我的同窗,充任游戏用户,为我试玩游戏,提出用户体验,已经修改建议,让我的游戏愈加人道化。