首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

各位大侠能不能帮帮小弟 检查一上

2012-12-23 
各位大侠能不能帮帮小弟 检查一下这段代码写好后始终无法实现计时过程,也没有游戏结束显示,知道的能不能告

各位大侠能不能帮帮小弟 检查一下
这段代码写好后始终无法实现计时过程,也没有游戏结束显示,知道的能不能告知一下 万分感激
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

import java.util.*;
import java.io.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class UFOCanvas extends GameCanvas implements  Runnable {
  private Display  display;
  private boolean  sleeping;
  private long     frameDelay;
  private long     gametime;
  private long    gametimeoffset;
  private Random   rand;
  private Image    background;
  private Sprite   ufoSprite;
  private Sprite   holeredSprite;
  private Sprite   holeblueSprite;
  private int      holeoneX;
  private int      holetwoX;
  private int      holeoneY;
  private int      holetwoY;
  private int      a;
  private int      ufoXSpeed, ufoYSpeed;
  private Sprite[] roidSprite = new Sprite[7];
  private boolean gameOver;
  private int numLives;
  private Player   musicPlayer;
  private Player   gameoverPlayer;
  public UFOCanvas(Display d) {
    super(true);
    display = d;
    frameDelay = 33;
    refresh();}
 private void refresh(){ 
                  rand = new Random();
                  holeoneY = rand.nextInt(240);
                  holeoneX = rand.nextInt(200);
                  holetwoY = rand.nextInt(200);
                  holetwoX = rand.nextInt(240);
}
public void start() {
    display.setCurrent(this);
    gametime=0;
    gametimeoffset=System.currentTimeMillis(); 
    gameOver = false;
numLives = 2;
    try {
      background=Image.createImage("/Universe.png");
      holeredSprite = new Sprite(Image.createImage("/holeone.png")); 
      holeredSprite.setPosition(holeoneX,holeoneY);
      holeblueSprite = new Sprite(Image.createImage("/holetwo.png")); 
      holeblueSprite.setPosition(holetwoX,holetwoY);
      ufoSprite = new Sprite(Image.createImage("/Saucer.png"));
      ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2, (getHeight() - ufoSprite.getHeight()) / 2);


      Image img = Image.createImage("/Roid.png");
      roidSprite[0] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[0] = new Sprite(img, 42, 35);
      roidSprite[1] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[1] = new Sprite(img, 42, 35);
      roidSprite[2] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[2] = new Sprite(img, 42, 35);
      roidSprite[3] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[3] = new Sprite(img, 42, 35);
      roidSprite[4] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[4] = new Sprite(img, 42, 35);
      roidSprite[5] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[5] = new Sprite(img, 42, 35);
      roidSprite[6] = new Sprite(Image.createImage("/Roid.png"));
      roidSprite[6] = new Sprite(img, 42, 35);}
     catch (IOException e) {
      System.err.println("Failed loading images!");
      }
     
     /*try {
      InputStream is = getClass().getResourceAsStream("Music.mid");
      musicPlayer = Manager.createPlayer(is, "audio/midi");
      musicPlayer.prefetch();
      is = getClass().getResourceAsStream("gameover.mid");
      gameoverPlayer = Manager.createPlayer(is, "audio/midi");
      gameoverPlayer.prefetch();}
      catch (IOException ioe) {}
      catch (MediaException me) {}
      try {
      musicPlayer.setLoopCount(-1);
      musicPlayer.start(); }
    catch (MediaException me) {}*/
     sleeping = false;
     Thread t = new Thread(this);
     t.start();
     }

public void stop() {
    musicPlayer.close();
    gameoverPlayer.close();
    sleeping = true;}
public void run() {
   this.repaint();
   try {Thread.sleep(100L); }
   catch (InterruptedException e) {
    e.printStackTrace();}
    Graphics g = getGraphics();
     while (!sleeping) {
      update();
      draw(g);
      try {Thread.sleep(frameDelay);}
      catch (InterruptedException ie) {


      }
      }
      }
private void update() {
if (gameOver) {
    int keyState = getKeyStates();
    if ((keyState & FIRE_PRESSED) != 0) { 
    ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2,(getHeight() - ufoSprite.getHeight()) / 2);
    gametimeoffset=System.currentTimeMillis();
    roidSprite[0].setPosition(0,0);
    roidSprite[1].setPosition(0,10);
    roidSprite[2].setPosition(0,20);
    roidSprite[3].setPosition(0,30);
    roidSprite[4].setPosition(0,40);
    roidSprite[5].setPosition(0,50);
    roidSprite[6].setPosition(0,60);
    gameOver = false;
numLives = 1;
    try {musicPlayer.setMediaTime(0);musicPlayer.start(); }
    catch (MediaException me) {}  
}return;}
    gametime=(System.currentTimeMillis()-gametimeoffset)/1000; 
        a= rand.nextInt(200);
        if(a==100){
           refresh();
           holeredSprite.setPosition(holeoneX,holeoneY); 
           holeblueSprite.setPosition(holetwoX,holetwoY); }
    int keyState = getKeyStates();
    if ((keyState & LEFT_PRESSED) != 0) {ufoXSpeed=-5; }
    else if ((keyState & RIGHT_PRESSED) != 0) {ufoXSpeed=5;}
    if ((keyState & UP_PRESSED) != 0) {ufoYSpeed=-5;}
    else if ((keyState & DOWN_PRESSED) != 0) {ufoYSpeed=5;}
    ufoSprite.move(ufoXSpeed, ufoYSpeed);
    checkBounds(ufoSprite);
    for (int i = 0; i < 7; i++) {
      roidSprite[i].move(i + 1, 1 - i);
      checkBounds(roidSprite[i]);
    if (i == 1)   roidSprite[i].prevFrame();
      else   roidSprite[i].nextFrame();
    if (ufoSprite.collidesWith(roidSprite[i], true)) {
    if (--numLives == 0) {
try {
            musicPlayer.stop();
            gameoverPlayer.setMediaTime(0);
            gameoverPlayer.start();
          }
    catch (MediaException me) {}    
   gameOver = true;
    }else {
    ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2,(getHeight() - ufoSprite.getHeight()) / 2);
    ufoXSpeed = ufoYSpeed = 0;


     for (int j = 0; j <7; j++)
     roidSprite[j].setPosition(0, 0);}  
    break;}}
    if (ufoSprite.collidesWith(holeredSprite, true)) {        ufoXSpeed=ufoYSpeed=0;}
    if (ufoSprite.collidesWith(holeblueSprite, true)) {  
    if ((keyState & LEFT_PRESSED) != 0) {ufoXSpeed=-10; }
     else if ((keyState & RIGHT_PRESSED) != 0) {ufoXSpeed=10; }
    if ((keyState & UP_PRESSED) != 0) { ufoYSpeed=-10; }
    else if ((keyState & DOWN_PRESSED) != 0) {ufoYSpeed=10; }}}
    private void draw(Graphics g) {g.drawImage(background,0 , 0, Graphics.TOP | Graphics.LEFT);
     holeredSprite.paint(g);holeblueSprite.paint(g);ufoSprite.paint(g);
      for (int i = 0; i < 7; i++)
      roidSprite[i].paint(g);
      
    if (gameOver) { if (gametime >30) {
      g.setColor(255, 255, 255); 
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
      g.drawString("GAME OVER", 120, 60, Graphics.TOP | Graphics.HCENTER);
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
      g.drawString("TIME  "+gametime+"  s",120,90, Graphics.TOP | Graphics.HCENTER);
      g.drawString("GREAT",120,120, Graphics.TOP | Graphics.HCENTER);
  g.drawString("You're Genius ",120,150, Graphics.TOP | Graphics.HCENTER);}
    else if (gametime <15) {
      g.setColor(255, 255, 255); 
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
      g.drawString("GAME OVER", 120, 60, Graphics.TOP | Graphics.HCENTER);
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
      g.drawString("TIME  "+gametime+"  s",120,90, Graphics.TOP | Graphics.HCENTER);
      g.drawString("Fighting",120,120, Graphics.TOP | Graphics.HCENTER);
  g.drawString("Don't   give   up ",120,150, Graphics.TOP | Graphics.HCENTER);
}
else {
      g.setColor(255, 255, 255); 
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
      g.drawString("GAME OVER", 120, 60, Graphics.TOP | Graphics.HCENTER);
      g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
      g.drawString("TIME  "+gametime+"  s",120,90, Graphics.TOP | Graphics.HCENTER);


      g.drawString("GOOD ",120,120, Graphics.TOP | Graphics.HCENTER);
  g.drawString("You can do better",120,150, Graphics.TOP | Graphics.HCENTER);}}
   flushGraphics();}
private void checkBounds(Sprite sprite) {
       if (sprite.getX() < -sprite.getWidth())
      sprite.setPosition(getWidth(), sprite.getY());
      else if (sprite.getX() > getWidth())
      sprite.setPosition(-sprite.getWidth(),  sprite.getY());
      if (sprite.getY() < -sprite.getHeight())
      sprite.setPosition(sprite.getX(), getHeight());
      else if (sprite.getY() > getHeight())
      sprite.setPosition(sprite.getX(), - sprite.getHeight()); }}
[解决办法]

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

import java.util.*;
import java.io.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
public class UFOCanvas extends GameCanvas implements Runnable {
   private Display display;
   private boolean sleeping;
   private long frameDelay;
   private long gametime;
   private long gametimeoffset;
   private Random rand;
   private Image background;
   private Sprite ufoSprite;
   private Sprite holeredSprite;
   private Sprite holeblueSprite;
   private int holeoneX;
   private int holetwoX;
   private int holeoneY;
   private int holetwoY;
   private int a;
   private int ufoXSpeed, ufoYSpeed;
   private Sprite[] roidSprite = new Sprite[7];
   private boolean gameOver;
   private int numLives;
   private Player musicPlayer;
   private Player gameoverPlayer;
   public UFOCanvas(Display d) {
   super(true);
   display = d;
   frameDelay = 33;
   refresh();}
  private void refresh(){  
   rand = new Random();
   holeoneY = rand.nextInt(240);
   holeoneX = rand.nextInt(200);
   holetwoY = rand.nextInt(200);
   holetwoX = rand.nextInt(240);
}
public void start() {
   display.setCurrent(this);
   gametime=0;
   gametimeoffset=System.currentTimeMillis();  
   gameOver = false;
 numLives = 2;
   try {
   background=Image.createImage("/Universe.png");
   holeredSprite = new Sprite(Image.createImage("/holeone.png"));  


   holeredSprite.setPosition(holeoneX,holeoneY);
   holeblueSprite = new Sprite(Image.createImage("/holetwo.png"));  
   holeblueSprite.setPosition(holetwoX,holetwoY);
   ufoSprite = new Sprite(Image.createImage("/Saucer.png"));
   ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2, (getHeight() - ufoSprite.getHeight()) / 2);
   Image img = Image.createImage("/Roid.png");
   roidSprite[0] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[0] = new Sprite(img, 42, 35);
   roidSprite[1] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[1] = new Sprite(img, 42, 35);
   roidSprite[2] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[2] = new Sprite(img, 42, 35);
   roidSprite[3] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[3] = new Sprite(img, 42, 35);
   roidSprite[4] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[4] = new Sprite(img, 42, 35);
   roidSprite[5] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[5] = new Sprite(img, 42, 35);
   roidSprite[6] = new Sprite(Image.createImage("/Roid.png"));
   roidSprite[6] = new Sprite(img, 42, 35);}
   catch (IOException e) {
   System.err.println("Failed loading images!");
   }
     
   /*try {
   InputStream is = getClass().getResourceAsStream("Music.mid");
   musicPlayer = Manager.createPlayer(is, "audio/midi");
   musicPlayer.prefetch();
   is = getClass().getResourceAsStream("gameover.mid");
   gameoverPlayer = Manager.createPlayer(is, "audio/midi");
   gameoverPlayer.prefetch();}
   catch (IOException ioe) {}
   catch (MediaException me) {}
   try {
   musicPlayer.setLoopCount(-1);
   musicPlayer.start(); }
   catch (MediaException me) {}*/
   sleeping = false;
   Thread t = new Thread(this);
   t.start();
   }

public void stop() {
   musicPlayer.close();
   gameoverPlayer.close();
   sleeping = true;}
public void run() {
   this.repaint();
   try {Thread.sleep(100L); }
   catch (InterruptedException e) {
   e.printStackTrace();}
   Graphics g = getGraphics();
   while (!sleeping) {
   update();
   draw(g);
   try {Thread.sleep(frameDelay);}
   catch (InterruptedException ie) {
   }
   }
   }
private void update() {
if (gameOver) {


   int keyState = getKeyStates();
   if ((keyState & FIRE_PRESSED) != 0) {  
   ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2,(getHeight() - ufoSprite.getHeight()) / 2);
   gametimeoffset=System.currentTimeMillis();
   roidSprite[0].setPosition(0,0);
   roidSprite[1].setPosition(0,10);
   roidSprite[2].setPosition(0,20);
   roidSprite[3].setPosition(0,30);
   roidSprite[4].setPosition(0,40);
   roidSprite[5].setPosition(0,50);
   roidSprite[6].setPosition(0,60);
   gameOver = false;
 numLives = 1;
   try {musicPlayer.setMediaTime(0);musicPlayer.start(); }
   catch (MediaException me) {} 
 }return;}
   gametime=(System.currentTimeMillis()-gametimeoffset)/1000;  
   a= rand.nextInt(200);
   if(a==100){
   refresh();
   holeredSprite.setPosition(holeoneX,holeoneY);  
   holeblueSprite.setPosition(holetwoX,holetwoY); }
   int keyState = getKeyStates();
   if ((keyState & LEFT_PRESSED) != 0) {ufoXSpeed=-5; }
   else if ((keyState & RIGHT_PRESSED) != 0) {ufoXSpeed=5;}
   if ((keyState & UP_PRESSED) != 0) {ufoYSpeed=-5;}
   else if ((keyState & DOWN_PRESSED) != 0) {ufoYSpeed=5;}
   ufoSprite.move(ufoXSpeed, ufoYSpeed);
   checkBounds(ufoSprite);
   for (int i = 0; i < 7; i++) {
   roidSprite[i].move(i + 1, 1 - i);
   checkBounds(roidSprite[i]);
   if (i == 1) roidSprite[i].prevFrame();
   else roidSprite[i].nextFrame();
   if (ufoSprite.collidesWith(roidSprite[i], true)) {
   if (--numLives == 0) {
 try {
   musicPlayer.stop();
   gameoverPlayer.setMediaTime(0);
   gameoverPlayer.start();
   }
   catch (MediaException me) {}   
 gameOver = true;
   }else {
   ufoSprite.setPosition((getWidth() - ufoSprite.getWidth()) / 2,(getHeight() - ufoSprite.getHeight()) / 2);
   ufoXSpeed = ufoYSpeed = 0;
   for (int j = 0; j <7; j++)
   roidSprite[j].setPosition(0, 0);}   
   break;}}
   if (ufoSprite.collidesWith(holeredSprite, true)) { ufoXSpeed=ufoYSpeed=0;}
   if (ufoSprite.collidesWith(holeblueSprite, true)) {   
   if ((keyState & LEFT_PRESSED) != 0) {ufoXSpeed=-10; }
   else if ((keyState & RIGHT_PRESSED) != 0) {ufoXSpeed=10; }
   if ((keyState & UP_PRESSED) != 0) { ufoYSpeed=-10; }
   else if ((keyState & DOWN_PRESSED) != 0) {ufoYSpeed=10; }}}


   private void draw(Graphics g) {g.drawImage(background,0 , 0, Graphics.TOP 
[解决办法]
 Graphics.LEFT);
   holeredSprite.paint(g);holeblueSprite.paint(g);ufoSprite.paint(g);
   for (int i = 0; i < 7; i++)
   roidSprite[i].paint(g);
     
   if (gameOver) { if (gametime >30) {
   g.setColor(255, 255, 255);  
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
   g.drawString("GAME OVER", 120, 60, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
   g.drawString("TIME "+gametime+" s",120,90, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.drawString("GREAT",120,120, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
 g.drawString("You're Genius ",120,150, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);}
   else if (gametime <15) {
   g.setColor(255, 255, 255);  
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
   g.drawString("GAME OVER", 120, 60, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
   g.drawString("TIME "+gametime+" s",120,90, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.drawString("Fighting",120,120, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
 g.drawString("Don't give up ",120,150, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
}
else {
   g.setColor(255, 255, 255);  
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE));
   g.drawString("GAME OVER", 120, 60, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM));
   g.drawString("TIME "+gametime+" s",120,90, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
   g.drawString("GOOD ",120,120, Graphics.TOP 
[解决办法]
 Graphics.HCENTER);
 g.drawString("You can do better",120,150, Graphics.TOP 


[解决办法]
 Graphics.HCENTER);}}
   flushGraphics();}
private void checkBounds(Sprite sprite) {
   if (sprite.getX() < -sprite.getWidth())
   sprite.setPosition(getWidth(), sprite.getY());
   else if (sprite.getX() > getWidth())
   sprite.setPosition(-sprite.getWidth(), sprite.getY());
   if (sprite.getY() < -sprite.getHeight())
   sprite.setPosition(sprite.getX(), getHeight());
   else if (sprite.getY() > getHeight())
   sprite.setPosition(sprite.getX(), - sprite.getHeight()); }}

热点排行