Android游戏开发之体育类游戏

Android游戏开发之体育类游戏

 

体育类游戏是面向体育爱好者的一类游戏,虽然拥有的玩家群体如何角色扮演或益智类游戏多,但是体育类游戏还是在众多的手机游戏种类中因独特的内容题材占有了一席之地。

以下我们以疯狂足球为例,向大家展示体育类游戏的开发过程及需要注意的事项:

本游戏主要由欢迎界面、游戏菜单界面、加载界面和游戏界面组成。下面分别就这几个界面加以说明。

1、 欢迎界面

游戏运行后,在欢迎界面中,首先播放的是一段欢迎动画,然后显示游戏的菜单。动画截图如下:

        

   

       这段动画主要是三张图片的轮流显示!代码并不怎么难,在这里暂不讨论。动画播放完之后,就进入游戏的菜单界面了;游戏菜单界面如下:

 

 

菜单最上方是一个俱乐部标志选择器(该选择器主要是用一个自定义的Gallery实现);中间为游戏中前、中、后场的球员站位分布调节面板以及声音开关;菜单下方是退出和开始按钮。

2、 加载界面

当玩家在菜单中完成游戏的各项选择设置之后,单击下方的“开始”按钮,屏幕就切换到游戏的加载界面,该界面截图如下:

 

 

在该界面中用一个图片的进度条来显示当前进度(该进度条的原理是这样的:先把屏幕设置黑色,其次弄一张图片,使图片的颜色从左到右逐渐变深!然后弄一个Rect框,该Rect的颜色也是黑色,让它遮盖该图片!最好在修改数据线程中不停的改变Rect的初始x坐标值,让该图片慢慢的显示出来!这样就做出了进度条的效果);

3、 游戏界面

当加载进度条走完之后,单击屏幕上任意位置就会切换到游戏界面,该界面截图如下:

 

在游戏界面中,球场上面是电脑的球门,下面是玩家的球门。玩家可以移动左右方向键来控制自己的球队与电脑展开追逐,当足球射入球门之后,屏幕会提示一个“进球啦”对话框,如下左图。在游戏进行中,玩家可以单击屏幕最上方中间的计分板来弹出游戏菜单,如下右图。

 

 

                

          

本游戏的规则是在比赛中,对阵双方进球数首先达到指定个数者获胜。如果获胜的是玩家,如下左图,那么游戏将会对一些参数进行调整(如足球移动速度等),让玩家继续挑战高级的赛事。如果获胜者是电脑,则如下右图所示。  。       

 

本游戏目前的框架基本就这样,如果要增加可玩性,还可以适当的添加些奖励物品!在此就不多赘述!

下面我们来讲些游戏中一些关键代码及一些代码需要注意的问题!

 一个好的项目,大凡高手在开始动手设计之前,都会选择一种设计模式!在这里我们选择MVC模式!有人可能会问MVC模式不是WEB系统职能分工模式吗?这个是当然,但是在这里我们也可以借用这种解决问题的思路!在这里我们把继承Activity的主类作为整个项目的控制模块!其次把继承自SurfaeView的类作为视图类,还有就是继承自Thread的线程类。

其实在这里每个界面模块我们都可以把它分成三个部分:继承SurfaceView的视图类、时刻修改后台数据的线程类和时刻刷新界面的线程类!下面我们来讲解下每个模块的一些关键代码及需注意事项.

1、 欢迎界面

WelcomeView.java

在该类onDraw(Canvas canvas)方法中,需要注意的是:canvas.drawBitmap(bmpSound[father.wantSound?0:1], 135, 370, paint);//绘制声音开关(这个算法好,如果wantSoundtrue则,取0,为false则取1

WelcomeThread.java

在该类中,主要是在后台时刻更新数据,定义animationCounterrotateCounter等,主要作用是为延长时间!让效果看起来更好些;

WelcomeDrawThread.java

该类的作用是按一定时间间隔重新绘制界面!

2、 加载界面

LoadingView.java

在该类onDraw方法中中,最重要的是显示当前进度的绘制!就是用以张图片,然后绘制一个黑Rect框遮住这张图片,然后再后台修改黑框的x坐标,让这张图片慢慢的显示出来,这样就做出了进度条的效果!

LoadingThread.java

(1)       该类的主要作用是,在该线程中按一定时间间隔改变Rect框的x坐标值!

(2)       还有就是在该线程中必须加一个判断,判断进度值是否已满,即是否等于100;如果等于100,则就要把flag设置为false;否则程序会一直循环执行下去;

LoadingDrawThread.java

在后台按一定间隔时间重新绘制界面!

3、 游戏界面

 GameView.java

  该类是游戏中比较重要的一个类,所有游戏中可绘制的内容都在该对象中留有引用!具体说明可参考源码注解!在此不多赘述!

4FootballActivity.java

1)本游戏中的Activity起到了控制器的作用。除了负责在不同的界面之间切换视图外,它还负责处理玩家的键盘单击事件和修改键盘状态等工作。

2)在该类中定义多个Rect,是为处理单击事件而建立的!当药单击一些不规则图片时,可以定义一个Rect把该图片框起来。当只要点击该Rect区域内,就能响应该事件!

5CustomGallery.java

   在该类中,主要是自定义一个俱乐部标志选择器(Gallery类似),在该类的drawGallery(Canvas canvas,Paint paint)方法中。需要注意的是,canvas中绘制内容,如果两张图片绘制在一个坐标点,则后面绘制的图片会把前面的图片给覆盖掉。所以在绘制过程中应由里向外!比如在此方法中就要依次绘制背景颜色,然后图片本身,最后是图片最外层的边框,顺序不能改变否则会达不到预期的效果!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值