论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

j2me手机游戏的开发-beckham goal(论文+程序)

这段代码首先创建了背景和玩家脑袋图像,然后开始创建精灵。并且每个精灵都被设置到屏幕的指定位置。虽然我们能够用游戏屏幕和精灵的宽度和高度来列出一个通用的精灵位置的方程式,但是这样通过硬性编码来确定位置还是更加的容易和准确。位置定下来以后,球员精灵的速度需要我们来设置,这样他们就能按照我们所设置的速度来行进了。 内容来自www.paper51.com

由于游戏中有相当多的图形对象,HCanvas类的draw()方法就比较简单。就拿绘制足球场背景为例,通过下面的代码就能实现:

paper51.com

g.drawImage(background,(0-70), 0, Graphics.TOP | Graphics.LEFT);

内容来自论文无忧网 www.paper51.com

对于玩家精灵和足球精灵的绘制,也就是游戏中最重要的图形对象。代码如下:

paper51.com

PlayerSprite.paint(g); copyright paper51.com

BallSprite.paint(g);

paper51.com

球员精灵的绘制,只需要把paint()方法的调用放入到循环中,就可以绘制完每辆汽车。代码如下:

paper51.com

for(int i = 0; i < 4; i++)

http://www.paper51.com

  npcSprite[i].paint(g);

内容来自www.paper51.com

4.2.2.            玩家按键移动的设置

内容来自www.paper51.com

Update()方法还负责处理用户输入和根据游戏屏幕移动玩家。按键来移动玩家和足球的代码如下:

paper51.com

if(++inputDelay > 2) {

copyright paper51.com

      int keyState =getKeyStates();

内容来自www.paper51.com

      if ((keyState& LEFT_PRESSED) != 0) 内容来自www.paper51.com

       {

内容来自论文无忧网 www.paper51.com

       PlayerSprite.move(-6, 0);

http://www.paper51.com

       PlayerSprite.nextFrame();

内容来自www.paper51.com

       BallSprite.move(-6, 0); 内容来自论文无忧网 www.paper51.com

       BallSprite.nextFrame(); http://www.paper51.com

      }

http://www.paper51.com

      else if((keyState & RIGHT_PRESSED) != 0) { paper51.com

       PlayerSprite.move(6, 0);

内容来自www.paper51.com

       PlayerSprite.nextFrame();

http://www.paper51.com

       BallSprite.move(6, 0);

内容来自www.paper51.com

       BallSprite.nextFrame(); 内容来自www.paper51.com

      } copyright paper51.com

      if ((keyState& UP_PRESSED) != 0) { paper51.com

       PlayerSprite.move(0, -6);

copyright paper51.com

       PlayerSprite.nextFrame();

paper51.com

       BallSprite.move(0, -6); paper51.com

       BallSprite.nextFrame(); copyright paper51.com

      } 内容来自论文无忧网 www.paper51.com

      else if((keyState & DOWN_PRESSED) != 0) {

内容来自www.paper51.com

       PlayerSprite.move(0, 6);

http://www.paper51.com

       PlayerSprite.nextFrame(); http://www.paper51.com

       BallSprite.move(0, 6);

copyright paper51.com

       BallSprite.nextFrame();

copyright paper51.com

      } 内容来自www.paper51.com

      else if((keyState & FIRE_PRESSED) != 0) {

内容来自www.paper51.com

       BallSprite.move(BallXSpeed, BallYSpeed); copyright paper51.com

       BallXSpeed = 6; 内容来自论文无忧网 www.paper51.com

       BallYSpeed = 6;        http://www.paper51.com

      }

paper51.com

     checkBounds(PlayerSprite, false);

内容来自论文无忧网 www.paper51.com

      checkBounds(BallSprite,false);

内容来自www.paper51.com

      // Reset theinput delay http://www.paper51.com

      inputDelay = 0; 内容来自www.paper51.com

    }

paper51.com

它在每次游戏循环的时候都要递增,而每3次游戏循环就允许一次按键发生。也就是说,按键的响应速度减小为游戏循环速度的三分之一,这就限制了玩家的移动速度,使得这个简单的游戏更好玩、更具有挑战性。当按键被检测到,代码就将玩家精灵和足球精灵移动一定的位置,然后调用nextFrame()来改变它的帧图像。CheckBounds()的调用,它用来确保玩家还在游戏屏幕的边界之内。它允许玩家折返精灵或者是把精灵限制在屏幕边界内移动。第二个参数决定了它会采取哪种行为,true便是精灵折返,而false表示防止精灵移动超出屏幕边界。

paper51.com

在游戏中加入了足球精灵,游戏开始的时候玩家精灵和足球精灵能同时控制,但是当玩家按fire键时,足球就会踢出去,并且此时玩家精灵的移动不能控制足球精灵的移动。只有当玩家精灵在此和足球精灵发生冲突的时候,玩家精灵的移动才能在此控制到足球精灵的移动。代码如下: paper51.com

if(BallSprite.collidesWith(PlayerSprite, true)) {

copyright paper51.com

if(++inputDelay > 2) { 内容来自www.paper51.com

      int keyState =getKeyStates(); 内容来自论文无忧网 www.paper51.com

…….

http://www.paper51.com

}

copyright paper51.com

}

内容来自www.paper51.com

对于碰撞的实现,在Wireless Toolkit中的MIDP 2.0的game包中所包含的collidesWith中有碰撞检测,但是由于该游戏主要的事件响应基本上于冲突有关,有关冲突的实现将在本章最后进行讲解。 paper51.com

------分隔线----------------------------
联系方式