您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 手机/mobile开发 > android游戏报告解析
2012-2013第一学期期末作业报告课程名称:移动终端游戏开发学院:软件学院专业:软件工程班级:1311012学号:2010214486姓名:左杭成绩:2012年12月29日基于Android的移动终端游戏设计与实现1.游戏概述桌球游戏是一个充满操作性的游戏,桌面足球又是其中之一,以其独特的魅力吸引了大批玩家,但是随着社会的发展与进步,桌球游戏也逐渐的消失在了人们的视野之中,为了重新体验桌球游戏的独特魅力,准备开发一个桌球游戏-超级足球。超级足球主要是模仿了现实生活中的桌面足球,在一定的区域内实验对于足球的控制,完成进球得分,得分高着获得胜利。2.游戏架构分析本游戏根据现实生活中的桌面足球的来,游戏会分为两家对战,对与操作杆的控制来击打小球,使得小球射进球门,为此我们需要设界面的显示模块和计小球的运动模块,对于游戏来说需要一些的奖励,所以增加一个物品奖励的模块,所以根据构思可以分为界面模块、运动的控制模块和物品奖励的模块。游戏的界面模块:主要显示游戏的主界面,大致可以分为加载界面和游戏主界面和菜单的界面,通过这三个界面来展现游戏。游戏的控制模块:主要包括了足球,玩家球员,电脑的控制,并且要实现碰撞检测,并且对键盘进行监听,并且对游戏的奖励模块也要有一些控制。游戏的奖励物品模块:在游戏中应该有物品的奖励模块来提高玩家对游戏的兴趣,物品奖励模块应该遵循一定的规则和一定的不确定性。总架构如下所示:3.游戏详细设计与实现对于游戏的开发,觉得对于每个模块一个部分一个部分的完成,并且不断的测试,并且不断的完善。1.首先应该对游戏的界面部分进行设计:创建一个主类FootBalGameActivity,FootBalGameActivity继承至Activity,然后在创建一个类WelcomeGame,这个类主要作为开始的显示,并且继承至surfaceView,游戏需要等待,于是需要创建一个等待的视图,创建LodingGame,继承至surfaceView,然后需要对游戏主界面的显示,所以创建一个类MainGame,也继承至SurfaceView。并且创建游戏的足球类Ball,以及实现球队的CustomTeam。2.然后对于游戏的控制模块进行设计:游戏中有小球电脑玩家手机玩家等需要控制的类,这些类需要继承Thread类,来取得各自的运行,小球类需要自己的运行模块,既需要自己一个线程类来控制,创建一个BallThread,继承至Thread,玩家Player需要自己的逻辑类,并且需要对小球的控制,既创建PlayerThread,来对小球进行控制。在各自的线程中做好自己的控制工作,来对游戏进行监听,从而控制游戏。3.最后奖励物品模块的设计:由上面的总体架构可以知道,奖励物品Award,奖励物品有两个,一个是IceAward和LargerAward这两个类,一个是冰冻效果。另外一个是增宽球门,在游戏中也需要一个类来对奖励的物品进行控制,创建一个类AwardManager,这个类独自的一个线程,所以应该继承至Thread。之后就要准备游戏的资源了,首先是球队的图片,本游戏准备选取中超联赛的十六只球队球队作为游戏的可选球队,大概如下所示:截取以上的球队资料并且保存图片如下所示:然后就是声音文件了,奖励物品有两个声音,一个是冰冻的效果,另外一个是增宽球门的效果,根据设想还有足球射进球门的声音和失败的声音和胜利的声音,当然足球滚动也应该有一个声音,背景音乐也应该有一个声音,于是准备了声音如下所示:重里面截取需要的音乐,截取完如下所示:游戏经历了上面的大致规划后,就开始进行了详细设计的阶段了,首先是对界面显示模块的详细设计:1.1FootballActivity这个主类,这个类的主要功能是运行程序时对界面加载显示,游戏需要显示界面和播放声音,所以需要获取图片资源,和播放声音文件,本游戏播放音乐使用Mediaplay,并且创建相行的Mediaplay,由于在足球运动中球员有十人,也分别为前中后三个位置,我们需要创建前中后三个矩形框,来去的对前中后场人数的设置,并且根据这前中后三个位置来设定游戏的画面,可以通过对人数的分配来变化不同的阵形:booleanwantSound=true;//判断声音是否播放的标志位MediaPlayermpWelcomeMusic;//打开游戏时登录的声音MediaPlayermpKick;//足球运动的声音MediaPlayermpCheerForWin;//玩家胜利的声音MediaPlayermpCheerForLose;//玩家失败的声音MediaPlayermpCheerForGoal;//玩家进球的庆祝的声音MediaPlayermpIce;//足球撞击冰块的声音MediaPlayermpLargerGoal;//球门增大的声音Rect[]rectPlus;//表示增加了球员的矩形框Rect[]rectMinus;//表示减少了球员的矩形框RectrectSound;//表示是否播放声音的矩形框RectrectStart;//表示开始的矩形框RectrectQuit;//表示退出的矩形框RectrectGallery;//表示gallery的矩形框//下面是获取图片资源并且保存在imagIDs里面int[]imageIDs={R.drawable.club_1,R.drawable.club_2,R.drawable.club_3,R.drawable.club_4,R.drawable.club_5,R.drawable.club_6,R.drawable.club_7,R.drawable.club_8,R.drawable.club_9,R.drawable.club_10,R.drawable.club_11,R.drawable.club_12,R.drawable.club_13,R.drawable.club_14,R.drawable.club_16,};intclubID=imageIDs[0];//表示当前的选取图片的id为0游戏开始的时候欢迎界面,必须有一定的加载,创建函数initWelcomGame(),然后就必须初始化rect的资源,于是创建initRect(),并且之后需要对游戏里面的声音进行加载,创建函数inintSound()来取得资源文件对象;publicvoidinitWelcomeGameSound(Contextcontext){mpWelcomeMusic=MediaPlayer.create(context,R.raw.music);}publicvoidinitRects(){rectPlus=newRect[3];//表示前中后场球员数的加号rectMinus=newRect[3];//表示前中后球员数的减号for(inti=0;i3;i++){rectPlus[i]=newRect(244,200+40*i,280,236+40*i);rectMinus[i]=newRect(280,200+40*i,316,236+40*i);}rectSound=newRect(135,370,185,420);rectStart=newRect(205,425,295,475);rectQuit=newRect(25,425,115,475);rectGallery=newRect(10,10,310,110);}publicvoidinitSound(){mpKick=MediaPlayer.create(this,R.raw.kick);updateProgressView();//更新游戏Loding进度条mpCheerForWin=MediaPlayer.create(this,R.raw.cheer_win);updateProgressView();//更新游戏Loding进度条mpCheerForLose=MediaPlayer.create(this,R.raw.cheer_lose);updateProgressView();//更新游戏Loding进度条mpCheerForGoal=MediaPlayer.create(this,R.raw.cheer_goal);updateProgressView();//更新游戏Loding进度条mpLargerGoal=MediaPlayer.create(this,R.raw.lager_goal);updateProgressView();//更新游戏Loding进度条mpIce=MediaPlayer.create(this,R.raw.ice);updateProgressView();//更新游戏Loding进度条}在界面显示中,必学对前中后场球员进行检查,因为前面已经提到了前中后场球员只能有十个人员,创建函数checkLayout():publicbooleancheckLayout(int[]layout){intsum=0;for(inti=0;ilayout.length;i++){//遍历取得球员的占位if(layout[i]0){//确定某一个位置上的人数不能大于0returnfalse;}else{sum+=layout[i];//将各个阵线上的球员个数相加}}if(sum==10){//人员和为十即是占位合法的returntrue;}else{returnfalse;}}1.2大概模型已经构建成功,由于需要自己勾践gallery,所交创建CustomTeam,这个类显示了球队的列表,提供给玩家选择球队,并且这个类可以实现android提供的gallery类似的功能,可以对于玩家的操作做出相应的视觉反映,创建CustomTeam:要实现与gallery类似的功能需要对于用户的操作做出具体的分析,并且对其进行准确的判断,所以需要创建一个Bitmap的数组来取得图片集,并且设置好图片集的数目和图片在游戏中的位置,也需要取得图片的宽度和高度:Bitmap[]bmpContent;//要现实的图片集intlength;//图片集的个数intcurrIndex;//当前被选择图片的IdintstartX;//gallery在游戏中左上角在屏幕中的x的坐标intstartY;//gallery在游戏中左上角在屏幕中的y的坐标intcellWidth;//图片的宽度intcellHeight;//图片的高度针对玩家的操作,做出相应的判断,选择相应的图片显示,创建setCurrent(),并且还需要创建一个函数drawrect()来描绘gallery中的图片,并且通过drawrect()函数来对图片进行一些特性的描绘publicvoidsetCurrent(intindex){//设置当前显示的图片if(index=0&&indexlength){this.currIndex=index;}}publicvoiddrawGallery(Canvascanvas,Paintpaint){//绘制图片PaintpaintBack=newPaint();paintBack.setARGB(220,99,99,99);//创建边框的画笔PaintpaintBorder=newPaint();paintBorder.setStyle(Paint.Style.STROKE);paintBorder.setStrokeWidth(4.5f);paintBorder.setARGB(255,150,150,150);//画左边的图片if(currIndex0){canvas.drawRect(startX,startY,startX+cellWidth,startY+cellHeight,paintBack);//背景canvas.drawBitmap(bmpContent[currIndex-1],startX,startY,paint);//贴图片canvas.drawRect(startX,s
本文标题:android游戏报告解析
链接地址:https://www.777doc.com/doc-3544434 .html