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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Android小游戏之课程设计.docx

1、Android小游戏之课程设计题 目 Android小游戏之2048 院 系 专 业 软件技术专业 学生姓名 宋建 学 号 DZXXX140 二一五 年 六 月 八 日目 录1概念 1.1游戏背景-1 1.2游戏开发-1 1.3论文内容安排-12 功能设计 2.1界面设计-2 2.2游戏设计-2 2.3事件监听-4 2.4游戏最终实现-43 结果展示 3.1游戏开始界面-7 3.2游戏结束界面-74 结论 4.1结论心得-85 参考文献 5参考文献-8 Android小游戏之2048 1 概述1.1 游戏背景小3传奇的悲剧以及2048的崛起。近期,新出的一款叫做2048的安卓手游十分的火爆,几

2、乎游戏下载排行榜的前10名都能看到“它的身影”。然而并不是每一个人都知道一件事,那是一个关于“2048”诞生的故事。故事的发展是这样的,2048的祖先是一款名为Threes(中文名为小3传奇)的手游。小3传奇的两位开发者花了近一年半时间才开发出这个游戏的核心玩法,却在其上架App store后仅21天就被1024抄了过去。最让人意想不到的是,2048则更为迅速,19岁的Gabriele Cirulli只用了一个星期改编前两者游戏,却获得最大的成功,Threes却不被人知。而到了现在,这类游戏从发布到现在,不管是App Store还是Android市场,下载量已经远远超越了千万,网上各种版本的都

3、有,比如朝代版,后宫版,甲乙丙版,生肖版等。1.2 游戏开发由于本人十分喜欢2048这款手游,在了解了本次课程设计是设计一个Android平台下的软件之后,就选定了2048作为本次课程论文的课题。在此次课程论文的制作过程中,我将运用我在课上学习到的知识以及java编程知识通过网上现有的资料尝试完成此次课程的开发。1.3论文内容安排要开发这一款游戏,要根据以下几步来完成:1)首先是要对这款游戏的代码分析。对整一个游戏,要将各个部位分割成其对应部位的功能代码,并且逐一去分析实现其中不同的功能。2)其次是游戏的流程。在做好每一个部分的代码之后,就需要把所创造的各个关键部分拼接起来,因此,就需要先把该

4、游戏的流程一步一步的弄清楚。3)再者是对2048这一款游戏的算法分析。对于整个游戏而言,最主要的心脏就是这一款游戏的算法,游戏好不好,就看这一款游戏的算法是不是符合逻辑。2048这一款游戏的算法分为上下左右自个方向的,具体的下面分析。4)2048中每个格子的数据和颜色的刷新。在每一次移动之后,几乎在这4*4的每一个方格上的数据都会变化,因此在每一次移动之后,每一个方格上的数据都要刷新一次。相对的,每一个数的背景颜色是不同的,也就是说,在每一次数据刷新的时候,每一个方格上的颜色也要同样的刷新一次。5)最后是可不可以继续游戏的检测。当屏幕上没有没有写有数据的方格并且屏幕上的数据没有哪两个相邻的数据

5、是一样的两个数,那么就判定为游戏结束。2 功能设计2.1 设计界面在设计整个2048游戏之前先得设计一个2048的游戏界面,只有有了游戏界面,才能够进行2048这一款游戏的下一步设计,这是创建2048小游戏的最基础的步骤。2048这一款游戏的界面是4*4方格的,于是就需要在界面上设置4*4的方格,有了这些方格之后才能在方格上面装卡片(Card),然后才能继续游戏。 private void onDrawBorder(Canvas canvas) paint.setShader(null); paint.setStrokeWidth(16); paint.setColor(Color.WHITE

6、); canvas.drawLine(0, 0, 0, this.getHeight(), paint); canvas.drawLine(0, 0, this.getWidth(), 0, paint); canvas.drawLine(this.getWidth(), 0, this.getWidth(), this.getHeight(), paint); canvas.drawLine(0, this.getHeight(), this.getWidth(), this.getHeight(), paint); 方格下面继而显示分数(Score)和最高分数(BestScore)。2.2

7、 游戏设计在2048游戏的界面设计好了之后,要求完成最核心的玩法就是卡片在于界面上4*4的移动,于是下一步的操作就是对卡片的具体设置,以下是一部分关键代码。 (1)创建一个卡片private Card getCard(int num) Card c; if (cards.size()0) c = cards.remove(0); else c = new Card(getContext(); addView(c); c.setVisibility(View.VISIBLE); c.setNum(num); return c; (2) 类Card继承了FrameLayout,目的是作为游戏中的卡

8、片,卡片各个数字和样式的实现:public void setNum(int num) this.num = num; if (num=0) label.setText(); else label.setText(num+); switch (num) case 0: label.setBackgroundColor(0x00000000);/透明色 break; case 2: default: label.setBackgroundColor(0xff3c3a32); break; (3) 卡片设计好了之后根据游戏要求判断在某一操作下同一方向上的卡片是否可以相加,可以相加的部分进行数据合并。

9、/合并相同数据int addscode = 0;for(int p=0;p0;q-) if(arraysqp=arraysq-1p&arraysqp!=0) flag_move = true; rraysqp+=arraysq-1p; addscode+=arraysqp; arraysq-1p=0; q-; 2.3 事件监听对于2048这个游戏经过之前对游戏界面的设计、对游戏元素卡片的创建和定义好了之后,最终目的是要使我们能够控制卡片进行移动,目标是使卡片能够根据我们的命令进行向上、向下、向左、向右的四个方向上的移动,这个需要加上4个方位的事件监听。 Override public bool

10、ean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) float X=e2.getX()-e1.getX(); float Y=e2.getY()-e1.getY(); final int FLING_Min_DISTANCE =50; if(XFLING_Min_DISTANCE&Math.abs(velocityX)Math.abs(velocityY) toRight(); else if(XMath.abs(velocityY) toLeft(); else if(YFLING_Min

11、_DISTANCE&Math.abs(velocityX)Math.abs(velocityY) toDown(); else if(Y-FLING_Min_DISTANCE&Math.abs(velocityX)Math.abs(velocityY) toUp(); return false; 以上是事件监听的部分关键代码,事件监听创建好了之后,整个游戏大部分要求已经完成了。2.4 游戏最终实现从游戏的角度来说,这个2048游戏有界面,有元素,可以移动已经基本完成了,但作为有个游戏而言最后还有几步没有完善。为了能够最终完整的实现整个游戏的功能,先绘制一个简单的流程图,整理一下思路。 是 否是

12、否是否否是(1)初始化 进入游戏,初始化4*4表格,并随机产生两个数字(2或者4); 二维数组this.tables表格循环存入数据; random1, random2 ,random11, random22四个随机数可以确定两个2的xy位置; 方法newNumber里面,根据位置i,j和级别num可以确定一个新的数字;创建背景cell和cell上面的数字标签cellLabel;并根据num确定是否显示cellLabel;最后给cell关联一个data数据;特别说明这里的number:num不是精灵上面的数字而是精灵的级别,比如number=11 则数字是1024。(2)游戏结束的判断 每次发

13、生卡片移动,都要检查游戏还能否继续,是否已经结束。使用函数CheckComplete()完成游戏是否失败的检查。(3)游戏的计分 在卡片的每一次移动的时候判断是否有两个相同数字进行相加,凡是有相见的两个数字其相加所得的和需要存入计分中,其中如果游戏获得了最高分要对最高分进行保存。public class BestScore private SharedPreferences sp; public BestScore(Context context) sp = context.getSharedPreferences(bestscore, context.MODE_PRIVATE); publi

14、c int getBestScore() int bestscore = sp.getInt(bestscore, 0); return bestscore; public void setBestScore(int bestScore) Editor editor = sp.edit(); editor.putInt(bestscore, bestScore); mit();3 结果展示3.1 游戏开始界面游戏开始啦,当所有步骤完成之后,运行程序,出现虚拟机,打开游戏2048,显示如下界面。3.2 游戏结束界面4 结论经过了几天的努力终于把2048这个游戏完成了,想当初看这个游戏玩法简单又内

15、容简单,没想到制作起来是这样“浩大”的一个工程。在这短短的几天时间里,参考了许多的相关资料,有时候感觉很辛苦不想再做下去了,但是又想试试看挑战一下自己的能力能不能完成这样一个任务,于是又在网上找到了不少对我很有帮助的材料、视频,为了自己的目标就这样一点一点地去完成这个项目。这几天里让我学习到了制作小游戏的基本步骤,首先要创建一个页面,然后再对页面进行相应的设置,再者要对对象进行设置,最后要使游戏能够听我们的指挥我们要插入一个事件监听,而且其中还需要结合各种算法才能实现这样的一个小小的小游戏,真是“麻雀虽小,五脏俱全”。最终运行出来的结果因为本人能力实在有限,完成不了用户自定义背景这个目标,而且在游戏结束之后最终得分无法显示在结束界面上,这让我意识到自身能力的不足,还有许许多多的知识等待着我去了解、去学习。虽然如此,但是看着最终运行出来的结果,还是给了我很大的鼓舞和安慰,这一次制作2048小游戏的经验让我受益匪浅,感受到了这个项目是我要正真用心认认真真完成的一件事,这真是一个难得的学习的过程。参考文献: 1 2 3 信息管理系列商业网站的创建与管理中国人民大学出版社200115-24.63-724 5 6 仲从友电子商务毕业设计指导中国科学出版社2007.107 李琪电子商务概论高等教育出版社2009.68 李琪电子商务案例分析重庆大学出版社2004.9 9 10 11 12

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1