当前位置:文档之家› 计算机专周实习报告

计算机专周实习报告

计算机专周实习报告 HEBEI UNITED UNIVERSITY计算机专业实习实习报告班级: 11计算机1班学号: xx14600112姓名:张伟指导教师:卢朝辉专业名称:计算机科学与技术信息工程学院xx年 6 月 27 日Android小游戏之20481 概述1.1 游戏背景《小3传奇》的悲剧以及《2048》的崛起。

近期,新出的一款叫做《2048》的安卓手游十分的火爆,几乎游戏下载排行榜的前10名都能看到“它的身影”。

然而并不是每一个人都知道一件事,那是一个关于“2048”诞生的故事。

故事的发展是这样的,《2048》的祖先是一款名为《Threes》(中文名为《小3传奇》)的手游。

《小3传奇》的两位开发者花了近一年半时间才开发出这个游戏的核心玩法,却在其上架App store后仅21天就被《1024》抄了过去。

最让人意想不到的是,《2048》则更为迅速,19岁的Gabriele Cirulli只用了一个星期改编前两者游戏,却获得最大的成功,《Threes》却不被人知。

而到了现在,这类游戏从发布到现在,不管是App Store还是Android市场,下载量已经远远超越了千万,网上各种版本的都有,比如朝代版,后宫版,甲乙丙版,生肖版等。

1.2 游戏开发由于本人十分喜欢《2048》这款手游,在了解了本次课程设计是设计一个Android平台下的软件之后,就选定了《2048》作为本次课程论文的课题。

在此次课程论文的制作过程中,我将运用我在《移动平台开发技术》学习到的知识以及java编程知识通过网上现有的资料尝试完成此次课程的开发。

1.3论文内容安排要开发这一款游戏,要根据以下几步来完成:1)首先是要对这款游戏的代码分析。

对整一个游戏,要将各个部位分割成其对应部位的功能代码,并且逐一去分析实现其中不同的功能。

2)其次是游戏的流程。

在做好每一个部分的代码之后,就需要把所创造的各个关键部分拼接起来,因此,就需要先把该游戏的流程一步一步的弄清楚。

3)再者是对《2048》这一款游戏的算法分析。

对于整个游戏而言,最主要的心脏就是这一款游戏的算法,游戏好不好,就看这一款游戏的算法是不是符合逻辑。

《2048》这一款游戏的算法分为上下左右自个方向的,具体的下面分析。

4)《2048》中每个格子的数据和颜色的刷新。

在每一次移动之后,几乎在这4*4的每一个方格上的数据都会变化,因此在每一次移动之后,每一个方格上的数据都要刷新一次。

相对的,每一个数的背景颜色是不同的,也就是说,在每一次数据刷新的时候,每一个方格上的颜色也要同样的刷新一次。

5)最后是可不可以继续游戏的检测。

当屏幕上没有没有写有数据的方格并且屏幕上的数据没有哪两个相邻的数据是一样的两个数,那么就判定为游戏结束。

2 功能设计2.1 设计界面在设计整个2048游戏之前先得设计一个2048的游戏界面,只有有了游戏界面,才能够进行2048这一款游戏的下一步设计,这是创建2048小游戏的最基础的步骤。

2048这一款游戏的界面是4*4方格的,于是就需要在界面上设置4*4的方格,有了这些方格之后才能在方格上面装卡片(Card),然后才能继续游戏。

paint);paint);方格下面继而显示分数(Score)和最高分数(BestScore)。

} canvas.drawLine(0, this.getHeight(), this.getWidth(), this.getHeight(), private void onDrawBorder(Canvas canvas) { paint.setShader(null); paint.setStrokeWidth(16);paint.setColor(Color.WHITE); 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(),2.2 游戏设计在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,目的是作为游戏中的卡片,卡片各个数字和样式的实现: 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) 卡片设计好了之后根据游戏要求判断在某一操作下同一方向上的卡片是否可以相加,可以相加的部分进行数据合并。

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

@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { floatX=e2.getX()-e1.getX(); float Y=e2.getY()-e1.getY(); final int FLING_Min_DISTANCE =50;if(X>FLING_Min_DISTANCE&&Math.abs(velocityX)>Math.abs(veloc ityY)){ toRight(); }elseif(X<-FLING_Min_DISTANCE&&Math.abs(velocityX)>Math.abs(velo cityY)){ toLeft(); }elseif(Y>FLING_Min_DISTANCE&&Math.abs(velocityX)<-FLING_Min_DIS TANCE&&Math.abs(velocityX)以上是事件监听的部分关键代码,事件监听创建好了之后,整个游戏大部分要求已经完成了。

2.4 游戏最终实现从游戏的角度来说,这个2048游戏有界面,有元素,可以移动已经基本完成了,但作为有个游戏而言最后还有几步没有完善。

为了能够最终完整的实现整个游戏的功能,先绘制一个简单的流程图,一下思路。

20篇实习报告精选合集浓情于酒目录 1. 关于计算机专业的实习报告......................................................................2 2. ×学校关于加强学生法制教育工作的实施方案..............................................5 3. xx个人工作总结(中学教师)工作总结.......................................................7 4. 银行个人挂职学习心得体会工作总结.........................................................10 5. 08—09学年第二学期建筑设计院实习报告...................................................12 6. 路政队员工作实习总结(1)......................................................................16 7. xx 工作实习心得...........................................................................17 8. xx 年超市........................................................................18 9. 铁路工程实习报告 (22)10. 软件公司实习小结 (27)11. 实习自我鉴定范文实习报告……………………………………………………………28 12. 在钢铁公司实习报告..............................................................................29 13. 电子电工毕业实习报告...........................................................................33 14. xx年5月城市规划设计. (35)15. 地理科学专业本科生xx年暑期实习报告……………………………………………40 16. 计算机组装实习报告……………………………………………………………………42 17. xx年暑期学校机房研发工作实习报告………………………………………………44 18. 京都大学生产实习报告(秘书工作).........................................................46 19. 土木工程学院排水专业污水处理厂实习报告 (54)20. 金融系专业学生的暑假实习报告………………………………………………………60_计算机专周实习报告。

相关主题