ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:644.23KB ,
资源ID:6500798      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6500798.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(移动设备应用程序开发大作业Word格式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

移动设备应用程序开发大作业Word格式.docx

1、目前国内外的Android开发还是主要以应用开发为主,主要分成3类:企业应用、通用应用以及游戏应用。第一类应用的开发主要是一些大公司为了自己的品牌而开发的。第二类的应用主要是一些创业型公司或者独立开发者为了盈利开发的应用。第三类应用目前跟第二类应用相同4。2048小游戏是一款最近风靡全球的手机游戏,简单的游戏模式和趣味的玩法,几乎游戏下载排行榜的前10名都可以看到“他的身影”。1.3 游戏开发意义现如今,手机游戏已在我们的生活中占据一席之地,并在一步步的壮大。可以说,随着他的迅猛发展,现今的手机游戏已经不单单是一种缓解压力的工具,而是形成了一种文化现象。随着游戏软件在市场的一步步壮大,与其有关

2、的文化也随之传播。2048游戏的制作属于电子游戏中的益智类小游戏,它做到了娱乐性、趣味性、教育性相统一。益智类的游戏即是需要去开动大脑去思考从而获得游戏的胜利。简单的益智类游戏可以使玩家在娱乐中不断的开发大脑。这样一来就实现了在娱乐中学习。现有2048游戏最大的不足在于过度强调简洁,它是由数字组成的游戏,所以在长时间的游戏后就会感觉无聊,同时在熟知玩法后就会知道下一个要拼出的数字,这就缺乏神秘感,当一款游戏缺乏了神秘和趣味时就注定失败。所以我们要勇于创新,将2048游戏开发出不同的版本,当玩家觉对拼接数字感到无聊时可以有不同的选择。2048还有一大缺点就是当玩家拼出2048时游戏就会结束,这样

3、就会让玩家感到失落,所以我们要创作一个永无止境的游戏,让玩家去不断的超越自己。第2章 系统的需求分析和概要设计2.1 系统需求分析2.1.1 系统功能需求分析系统主要实现以下的几个功能:关卡选择、呈现游戏界面、重新开始游戏、当前分数和最高分数、游戏帮助等功能。关卡选择是当玩家点击此按钮时,游戏就会从主界面跳转到关卡选择界面,当玩家选择相应的关卡时,先判断此关卡是否开启,如果没有开启此关卡就会弹出对话框提示玩家此关卡未开启,如果此关卡已经开启就会跳转到主界面同时开始此关卡。重新开始游戏是当玩家无法满足当前进度时点击此按钮就会重新开始游戏,如果玩家处于不同关卡时重新开始游戏还是停留在此关卡。游戏帮

4、助是当新手玩此游戏时无法知道游戏玩法时给予相应的提示。呈现游戏界面是游戏开始时主界面在游戏区域会生成44的矩阵同时在矩阵里面随机生成两个2或4的卡片。当前分数和最高分数是显示此局玩家所获得的分数和历史最高的分数,如果当前的分数超过最高分数那么最高分显示当前的分数,如图2-1所示。图2-1系统功能图2.1.2 游戏基本规则在开始游戏后玩家通过滑动屏幕来操控卡片的移动方向,当卡片滑动中如果有两张卡片相同且他们的中间也没有其他卡片时,在滑动的过程中这两张卡片会合并,显示为这两张卡片之和。在滑动之中有三张卡片相同时只会合并向滑动方向两张卡片。在滑动中如果有两张卡片一样同时又有一张卡片的值跟这两张卡片相

5、加的值时,滑动只会使那两张相同的卡片合并而不会接着让合并后的卡片和另一张卡片合并。2.2 系统概要设计2.2.1 系统流程的设计游戏开始进入开始页面,能够进入游戏的主界面并开始普通开局,从主界面能够重新开始游戏、查看帮助和进入关卡选择界面。当玩家点击重新开始按钮会弹出相应的对话框让玩家选择,如果玩家选择“是”时则重新开始游戏,如果选择“否”则返回游戏界面不做任何处理。当玩家点击关卡按钮会跳转到关卡选择界面,关卡界面将显示所有的关卡,当玩家点击相应的关卡时后台会判断此关卡是否开启,如果已经开启将会跳转到主界面并运行此关卡,如果没有开启将给予玩家提示“此关卡未开启”对话框。在开始界面按返回按钮时则

6、会退出游戏。游戏的流程图如图2-2所示:图2-2系统流程图2.2.2 系统模块设计算法设计(1)当有两张卡片相同时,向它们可以碰撞的方向滑屏,卡片会移动到最底边并生成其两倍数字的卡片,并且生成一个“2”或“4”的卡片,如图2-3所示:图2-3 简单卡片合成(2)当有两张卡片相同时,且在他相同的方向有张跟它们之和的卡片,向它们可以碰撞的方向滑屏,相同的卡片会移动到无法移动的位置并生成期两倍数字的卡片,但合成的卡片不会跟那张两倍数字的卡片合并,并且生成一个“2”或“4”的卡片,如图2-4所示:图2-4 复杂卡片合成(3)当界面上没有空位并且两两相邻的卡片不相同时游戏结束。如图2-5所示:图2-5游

7、戏结束第3章 系统实现3.1 开始界面的实现游戏的主界面是按钮图片,只是实现了界面的跳转,当玩家点击此界面时就会调用ZuomianActivity此函数让页面跳转到游戏界面开始游戏,如图3-1所示:public class ZuomianActivity extends Activity protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main0);图3-1 开始界面3.2 游戏界面的实现游戏界面主要是在

8、MainActivity_main.xml中当前分数、最高分数、游戏区域,当跳转到游戏界面时就会调用并执行MainActivity.java函数来展示游戏界面,如图3-2所示。protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);图3-2 主界面3.3 游戏滑屏卡片移动的实现当玩家滑动屏幕时,主要是通过initGameView函数来监听玩家手指滑动的位置,先通过获取开始坐标和结束坐标,然后通过比较结束

9、坐标跟开始坐标的差值来判断玩家是怎样滑动屏幕的。判断出玩家的滑动轨迹后,通过调用swipeLeft、swipeRight、swipeUp、swipeDown方法来实现卡片的移动,如图3-3所示。图3-3 卡片移到public void initGameView() setColumnCount(4); setOnTouchListener(new OnTouchListener() private float startX, startY, offsetX, offsetY; public boolean onTouch(View v, MotionEvent event) switch (e

10、vent.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) swipeRight(); else if (offsetY swipeDown(); return

11、true; ); private void swipeLeft() boolean merge = false; for (int y = 0; y 4; y+) for (int x = 0; x x+) for (int x1 = x + 1; x1 0) if (cardsMapxy.getNum() = 0; x-) for (int x1 = x - 1; x1 x1-) if (cardsMapx1y.getNum() if (cardsMapxy.getNum() cardsMapxy.setNum(cardsMapx1y.getNum(); cardsMapx1y.setNum

12、(0); x+; merge = true; else if (cardsMapxy.equals(cardsMapx1y) cardsMapxy.setNum(cardsMapxy.getNum() * 2); MainActivity.getMainActivity().addScore( cardsMapxy.getNum(); private void swipeUp() for (int y = 0; for (int y1 = y + 1; y1 cardsMapxy.setNum(cardsMapxy1.getNum(); cardsMapxy1.setNum(0); y-; e

13、lse if (cardsMapxy.equals(cardsMapxy1) private void swipeDown() for (int y = 3; y y-) for (int y1 = y - 1; y1 y1-) y+; 3.4 重新开始游戏功能的实现当玩家点击游戏界面的重新开始游戏时,会弹出给玩家选择的对话框,让玩家选择是否重新开始游戏。当玩家选择“是”时游戏会重新开始,重新开始游戏会根据玩家当前所选的关卡来重置游戏,如果玩家选择“否”时,游戏将继续下去,如图3-4所示。图3-4 重新开始游戏btnNewGame = (Button) findViewById(R.id.bt

14、nNewGame);btnNewGame.setOnClickListener(new View.OnClickListener() public void onClick(View v) new AlertDialog.Builder(MainActivity.this) .setTitle( 是否重新再来!) .setNegativeButton(取消,new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,int which) ) .setPositiveButton(确定 if (

15、getGameid() = 0) gameView.startGame(); else if (getGameid() = 1) gameView.startGame64(); else if (getGameid() = 2) gameView.startGame128(); else if (getGameid() = 3) gameView.startGame256(); else if (getGameid() = 4) gameView.startGame512(); else if (getGameid() = 5) gameView.startGame1024(); else i

16、f (getGameid() = 6) gameView.startGame2048(); else if (getGameid() = 7) gameView.startGame4096(); else if (getGameid() = 8) gameView.startGame8192(); else if (getGameid() = 9) gameView.startGame16384(); else if (getGameid() = 10) gameView.startGame32768(); else if (getGameid() = 11) gameView.startGa

17、me65536(); ).show();3.5 触控交互设计本模块主要实现用户通过手指滑动屏幕,起始位置,获得水平或垂直方向的偏移离量,以此来判断用户的意图,主要是通过调用OnTouchListener监听器来实现的,具体代码实现如下:setOnTouchListener(newOnTouchListener()privatefloatstartHorizontal,startVertical;privatefloatshiftHorizontal,shiftVertical;publicbooleanonTouch(Viewv,MotionEventevent)/TODOAuto-gener

18、atedmethodstubswitch(event.getAction()caseMotionEvent.ACTION_DOWN:startHorizontal=event.getX();startVertical=event.getY();break;caseMotionEvent.ACTION_UP:shiftHorizontal=event.getX()-startHorizontal;shiftVertical=event.getY()-startVertical;if(Math.abs(shiftHorizontal)Math.abs(shiftVertical)if(shiftH

19、orizontal4)slipRight();elseif(shiftVerticalslipDown();break;特殊情况:由于人的手指在滑动方向会有偏差,一般不会精准的向四个方向滑动,肯定会有偏差,所以要判断手指滑过方向的是水平方向还是垂直方向的意图,当水平方向的偏移量大于垂直方向的偏移量时,表明用户是水平滑动意图,当垂直方向的偏移量大于水平方向的偏移量,表明用户是垂直方向滑动的意图。由于人的手指只有滑动一段距离才能表明用户的意图,不可能点一下屏幕或者稍微动一下就表示滑动意图,这显然不太符合现实情况,所以要定义偏移一定的距离才能判断用户的真正意图。规定当水平方向的偏移距离大于或者等于水

20、平方向的偏移距离,且当偏移小于5时,用户向上滑动,大于5使,规定向下滑动;当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于5时,规定用户向左滑动,如果大于5,用户向右滑动。3.6 在游戏中添加随机数对于每个文本框来说,规定如果文本框的数字小于等于0,清空当前文本框的数字小于等于0的文本框的数字,把每个空的文本框存储在一个空点数组中,最后取出一个空点,然后把改所在的文本框的数字设置为0或4,并且规定0和4出现的概率为9比1。具体实现代码如下:privatevoidaddRadomNumber()emptyPoint.clear();for(inti=0;i4.;i+)for(intj=0;j4;j+)if(cardArrayji.getNumber()=0)emptyPoint.add(newPoint(j

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2