欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:4184560       资源大小:644.23KB        全文页数:19页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、移动设备应用程序开发大作业淮阴工学院移动设备应用程序开发大作业系(院): 计算机与软件工程学院 专 业:计算机科学与技术 班 级: 计算机3132 学生姓名: 王奇奇 学 号: 1131321206 任课教师: 张海艳 学年学期: 2016 2017 学年 第 1 学期 2016 年 12 月 26 基于Android平台2048游戏开发第1章 绪论1.1 游戏开发背景Android 智能手机功能非常强大,具有很高的性价比,非常深受人们的喜爱,可能正式因为如此,在2014年中,Android 智能手机在全世界占据着81.5%很夸张的市场份额,一举成为使用的人数最多,市场份额占据最大的Andro

    2、id 智能手机系统。而Android 智能手机游戏的出现正是为了娱乐心神,并且随着智能移动终端和全球移动通信网络的不断进步,Android 智能手机游戏也正在经历从简单到复杂的进化过程。从全球来看,智能移动终端的娱乐服务一直被认为是带动移动数据业务加速并快速发展的重要力量。也是作为手机娱乐服务的重要内容之一。近年来,一直伴随着全球移动网络和移动终端性能不断的提高和完善。由于近几年来,Android智能手机游戏的快速发展,游戏的分类也变得越来越丰富,目前手机游戏按内容可分为:角色扮演类(RPG)、冒险类(AVG)、格斗类(FTG)、棋牌类、电影改版类、益智类、体育竞技类、模拟类。手机游戏种类目前

    3、已成为人类线上娱乐生活的不可或缺的最主流的载体而存在,现代人对于移动终端的休闲娱乐功能所需求越来越强大,移动终端上的游戏或已以成为了现代人们娱乐生活中不可或缺的一部分了。1.2 国内外研究现状目前国内外的Android开发还是主要以应用开发为主,主要分成3类:企业应用、通用应用以及游戏应用。第一类应用的开发主要是一些大公司为了自己的品牌而开发的。第二类的应用主要是一些创业型公司或者独立开发者为了盈利开发的应用。第三类应用目前跟第二类应用相同4。2048小游戏是一款最近风靡全球的手机游戏,简单的游戏模式和趣味的玩法,几乎游戏下载排行榜的前10名都可以看到“他的身影”。1.3 游戏开发意义现如今,

    4、手机游戏已在我们的生活中占据一席之地,并在一步步的壮大。可以说,随着他的迅猛发展,现今的手机游戏已经不单单是一种缓解压力的工具,而是形成了一种文化现象。随着游戏软件在市场的一步步壮大,与其有关的文化也随之传播。2048游戏的制作属于电子游戏中的益智类小游戏,它做到了娱乐性、趣味性、教育性相统一。益智类的游戏即是需要去开动大脑去思考从而获得游戏的胜利。简单的益智类游戏可以使玩家在娱乐中不断的开发大脑。这样一来就实现了在娱乐中学习。现有2048游戏最大的不足在于过度强调简洁,它是由数字组成的游戏,所以在长时间的游戏后就会感觉无聊,同时在熟知玩法后就会知道下一个要拼出的数字,这就缺乏神秘感,当一款游

    5、戏缺乏了神秘和趣味时就注定失败。所以我们要勇于创新,将2048游戏开发出不同的版本,当玩家觉对拼接数字感到无聊时可以有不同的选择。2048还有一大缺点就是当玩家拼出2048时游戏就会结束,这样就会让玩家感到失落,所以我们要创作一个永无止境的游戏,让玩家去不断的超越自己。第2章 系统的需求分析和概要设计2.1 系统需求分析2.1.1 系统功能需求分析系统主要实现以下的几个功能:关卡选择、呈现游戏界面、重新开始游戏、当前分数和最高分数、游戏帮助等功能。关卡选择是当玩家点击此按钮时,游戏就会从主界面跳转到关卡选择界面,当玩家选择相应的关卡时,先判断此关卡是否开启,如果没有开启此关卡就会弹出对话框提示

    6、玩家此关卡未开启,如果此关卡已经开启就会跳转到主界面同时开始此关卡。重新开始游戏是当玩家无法满足当前进度时点击此按钮就会重新开始游戏,如果玩家处于不同关卡时重新开始游戏还是停留在此关卡。游戏帮助是当新手玩此游戏时无法知道游戏玩法时给予相应的提示。呈现游戏界面是游戏开始时主界面在游戏区域会生成44的矩阵同时在矩阵里面随机生成两个2或4的卡片。当前分数和最高分数是显示此局玩家所获得的分数和历史最高的分数,如果当前的分数超过最高分数那么最高分显示当前的分数,如图2-1所示。图2-1系统功能图2.1.2 游戏基本规则在开始游戏后玩家通过滑动屏幕来操控卡片的移动方向,当卡片滑动中如果有两张卡片相同且他们

    7、的中间也没有其他卡片时,在滑动的过程中这两张卡片会合并,显示为这两张卡片之和。在滑动之中有三张卡片相同时只会合并向滑动方向两张卡片。在滑动中如果有两张卡片一样同时又有一张卡片的值跟这两张卡片相加的值时,滑动只会使那两张相同的卡片合并而不会接着让合并后的卡片和另一张卡片合并。2.2 系统概要设计2.2.1 系统流程的设计游戏开始进入开始页面,能够进入游戏的主界面并开始普通开局,从主界面能够重新开始游戏、查看帮助和进入关卡选择界面。当玩家点击重新开始按钮会弹出相应的对话框让玩家选择,如果玩家选择“是”时则重新开始游戏,如果选择“否”则返回游戏界面不做任何处理。当玩家点击关卡按钮会跳转到关卡选择界面

    8、,关卡界面将显示所有的关卡,当玩家点击相应的关卡时后台会判断此关卡是否开启,如果已经开启将会跳转到主界面并运行此关卡,如果没有开启将给予玩家提示“此关卡未开启”对话框。在开始界面按返回按钮时则会退出游戏。游戏的流程图如图2-2所示:图2-2系统流程图2.2.2 系统模块设计算法设计(1)当有两张卡片相同时,向它们可以碰撞的方向滑屏,卡片会移动到最底边并生成其两倍数字的卡片,并且生成一个“2”或“4”的卡片,如图2-3所示:图2-3 简单卡片合成(2)当有两张卡片相同时,且在他相同的方向有张跟它们之和的卡片,向它们可以碰撞的方向滑屏,相同的卡片会移动到无法移动的位置并生成期两倍数字的卡片,但合成

    9、的卡片不会跟那张两倍数字的卡片合并,并且生成一个“2”或“4”的卡片,如图2-4所示:图2-4 复杂卡片合成(3)当界面上没有空位并且两两相邻的卡片不相同时游戏结束。如图2-5所示:图2-5游戏结束第3章 系统实现3.1 开始界面的实现游戏的主界面是按钮图片,只是实现了界面的跳转,当玩家点击此界面时就会调用ZuomianActivity此函数让页面跳转到游戏界面开始游戏,如图3-1所示:public class ZuomianActivity extends Activity protected void onCreate(Bundle savedInstanceState) super.on

    10、Create(savedInstanceState); setContentView(R.layout.activity_main0);图3-1 开始界面3.2 游戏界面的实现游戏界面主要是在MainActivity_main.xml中当前分数、最高分数、游戏区域,当跳转到游戏界面时就会调用并执行MainActivity.java函数来展示游戏界面,如图3-2所示。protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activi

    11、ty_main);图3-2 主界面3.3 游戏滑屏卡片移动的实现当玩家滑动屏幕时,主要是通过initGameView函数来监听玩家手指滑动的位置,先通过获取开始坐标和结束坐标,然后通过比较结束坐标跟开始坐标的差值来判断玩家是怎样滑动屏幕的。判断出玩家的滑动轨迹后,通过调用swipeLeft、swipeRight、swipeUp、swipeDown方法来实现卡片的移动,如图3-3所示。图3-3 卡片移到public void initGameView() setColumnCount(4); setOnTouchListener(new OnTouchListener() private flo

    12、at startX, startY, offsetX, offsetY; 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.a

    13、bs(offsetX) Math.abs(offsetY) if (offsetX 5) swipeRight(); else if (offsetY 5) swipeDown(); break; return true; ); private void swipeLeft() boolean merge = false; for (int y = 0; y 4; y+) for (int x = 0; x 4; x+) for (int x1 = x + 1; x1 0) if (cardsMapxy.getNum() = 0) cardsMapxy.setNum(cardsMapx1y.g

    14、etNum(); cardsMapx1y.setNum(0); x-; merge = true; else if (cardsMapxy.equals(cardsMapx1y) cardsMapxy.setNum(cardsMapxy.getNum() * 2); cardsMapx1y.setNum(0); MainActivity.getMainActivity().addScore( cardsMapxy.getNum(); merge = true; break; if (merge) addRandomNum(); checkComplete(); private void swi

    15、peRight() boolean merge = false; for (int y = 0; y = 0; x-) for (int x1 = x - 1; x1 = 0; x1-) if (cardsMapx1y.getNum() 0) if (cardsMapxy.getNum() = 0) cardsMapxy.setNum(cardsMapx1y.getNum(); cardsMapx1y.setNum(0); x+; merge = true; else if (cardsMapxy.equals(cardsMapx1y) cardsMapxy.setNum(cardsMapxy

    16、.getNum() * 2); cardsMapx1y.setNum(0); MainActivity.getMainActivity().addScore( cardsMapxy.getNum(); merge = true; break; if (merge) addRandomNum(); checkComplete(); private void swipeUp() boolean merge = false; for (int x = 0; x 4; x+) for (int y = 0; y 4; y+) for (int y1 = y + 1; y1 0) if (cardsMa

    17、pxy.getNum() = 0) cardsMapxy.setNum(cardsMapxy1.getNum(); cardsMapxy1.setNum(0); y-; merge = true; else if (cardsMapxy.equals(cardsMapxy1) cardsMapxy.setNum(cardsMapxy.getNum() * 2); cardsMapxy1.setNum(0); MainActivity.getMainActivity().addScore( cardsMapxy.getNum(); merge = true; break; if (merge)

    18、addRandomNum(); checkComplete(); private void swipeDown() boolean merge = false; for (int x = 0; x = 0; y-) for (int y1 = y - 1; y1 = 0; y1-) if (cardsMapxy1.getNum() 0) if (cardsMapxy.getNum() Math.abs(shiftVertical)if(shiftHorizontal4)slipRight();elseif(shiftVertical4)slipDown();break;特殊情况:由于人的手指在

    19、滑动方向会有偏差,一般不会精准的向四个方向滑动,肯定会有偏差,所以要判断手指滑过方向的是水平方向还是垂直方向的意图,当水平方向的偏移量大于垂直方向的偏移量时,表明用户是水平滑动意图,当垂直方向的偏移量大于水平方向的偏移量,表明用户是垂直方向滑动的意图。由于人的手指只有滑动一段距离才能表明用户的意图,不可能点一下屏幕或者稍微动一下就表示滑动意图,这显然不太符合现实情况,所以要定义偏移一定的距离才能判断用户的真正意图。规定当水平方向的偏移距离大于或者等于水平方向的偏移距离,且当偏移小于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


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开