⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hunt_canvas.java

📁 类似于推箱子的手机游戏源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Hunt_Canvas.java
 *
 * Created on 2007年10月19日, 下午2:42
 */
import java.io.IOException;
import java.io.InputStream;
import java.util.Timer;
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.*;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;

/**
 *
 * @author  liang
 * @version
 */
public class Hunt_Canvas extends GameCanvas implements Runnable{
    /**
     * constructor
     */
    private static final int TIMEPERSTAGE = 45;
    private static final int UPMOVE = 1;//向上标志值
    private static final int DOWNMOVE = 2;//向下标志值
    private static final int LEFTMOVE = 3;//向左标志值
    private static final int RIGHTMOVE = 4;//向右标志值
    private static final int FIRE = 5;//开火标志值
    private static final int STARTING = 6;//游戏开始
    private static final int QUIT = 7;//离开游戏
    private static final int AIMAT = 8;//瞄准状态
    private static final int ALLSTATESPASSED = 9;//通关
    private static final int STAGEPASSING = 10;//过关
    private static final int GAMEOVER = 11;//游戏结束
    private static final int SIZEOFPLAYER = 8; 
    
    private int stage;//游戏状态
    private static final int size = 7;
    
    private Hunt_Midlet midlet;
    private boolean isPaused;//初始化暂停状态
    private Post post;//准星精灵
    private Image postImg;//准星图片
    private Image backGroundImg;//背景图片
    private int postImgWid;
    private int postImgHigt;   
    private int ScreenWid;//屏幕宽度
    private int ScreenHigt;//屏幕高度
    private Image rabitImg;
    private Rabit rabit;
    private Image chickenImg;
    private Animal chicken;
    private Animal pig;
    private Image pigImage;
    private Image birdImg;
    private Bird bird;
    private Image balloonImg;
    private Balloon balloon;
    private Image duckImg;
    private Bird duck;
    private Image flyImg;
    private Fly fly;
    private Random rnd;
    private boolean[] flag;
    private boolean isRn;
    private Image img;
    private NumImgTools TimeFont;        //时间
    private long startTime;             //游戏开始时间
    private int score; 
    private volatile Thread mainThread = null; //游戏运行动画线程
    private Timer timer = null;
    private int LeftTime;
    private int [] MinScore = { 100, 500, 900, 1400, 2000};
    private int StageNum;
    private MenuList menulist;
    private Player bulletPlayer;
    
    private int clickCounter = 0;
    
    
    public Hunt_Canvas(Hunt_Midlet HuntMid) {
        super(true);//抑制keyPressed等方法的调用,使用getKeyStates()方法
        setFullScreenMode(true);  //设置全屏显示
        this.midlet = HuntMid;
        ScreenWid = getWidth();
        ScreenHigt = getHeight();
        stage = STARTING;
        rnd = new Random();
        flag = new boolean[size];
        isRn = true;
        backGroundImg = ImageTools.createImage("/background.png");
        post = new Post(this,ScreenWid, ScreenHigt);
        //img = ImageTools.createImage("/number.png");
        //TimeFont = new NumImgTools(getGraphics(), img, img.getWidth(), img.getHeight());
        rabitImg = ImageTools.createImage("/tuzi.png"); 
        rabit = new Rabit(this,rabitImg,backGroundImg.getWidth(),backGroundImg.getHeight());
        chickenImg = ImageTools.createImage("/Chicken.png"); 
        chicken = new Animal(this,chickenImg,backGroundImg.getWidth(),backGroundImg.getHeight(),1);
        pigImage = ImageTools.createImage("/pig.png");
        pig = new Animal(this, pigImage, backGroundImg.getWidth(), backGroundImg.getHeight(),5);
        birdImg = ImageTools.createImage("/bird.png"); 
        bird = new Bird(this,birdImg,backGroundImg.getWidth(),backGroundImg.getHeight(),2);
        duckImg = ImageTools.createImage("/duck.png"); 
        duck = new Bird(this,duckImg,backGroundImg.getWidth(),backGroundImg.getHeight(),3);
        balloonImg = ImageTools.createImage("/balloon.png");
        balloon = new Balloon(this, balloonImg, backGroundImg.getWidth(),backGroundImg.getHeight(),6);
        flyImg = ImageTools.createImage("/fly.png"); 
        fly = new Fly(this,flyImg,backGroundImg.getWidth(),backGroundImg.getHeight());
        //bulletPlayer = new Player[SIZEOFPLAYER];
        init();
              
    }
    
    /**
     * paint
     */
    public void paint(Graphics g) {
        switch(stage){
            case STARTING:
               //flushGraphics();
                paintBackGround(g);
                //flushGraphics();
               // TimeFont.drawNums((int)(System.currentTimeMillis()-startTime)/1000,(backGroundImg.getWidth() - 14 * 2) / 2, 30, 2);             // 画出记时文字
                if(flag[0])
                       rabit.paint(g);
                if(flag[1])      
                        chicken.paint(g);
                 if(flag[2])   
                       bird.paint(g);
                 if(flag[3])    
                       duck.paint(g);
                 if(flag[4])     
                       fly.paint(g);
                 if(flag[5])
                     pig.paint(g);
                 if(flag[6])
                     balloon.paint(g);
               
               post.getPostSprite().paint(g);
               // TimeFont.drawNums((int)(System.currentTimeMillis()-startTime)/1000,(backGroundImg.getWidth() - 14 * 2) / 2, 30, 2);             // 画出记时文字
               //flushGraphics(); 
                break;
            case STAGEPASSING:               
                    g.drawImage( ImageTools.createImage("/pass.png"), ScreenWid/2,
                            ScreenHigt/2, Graphics.HCENTER|Graphics.VCENTER );
                    
                break;
                
            case GAMEOVER:
                g.drawImage( ImageTools.createImage("/gameover.png"), ScreenWid/2,
                            ScreenHigt/2, Graphics.HCENTER|Graphics.VCENTER);
               break;
            case ALLSTATESPASSED:
                g.drawImage( ImageTools.createImage("/passall.png"), ScreenWid/2,
                            ScreenHigt/2, Graphics.HCENTER|Graphics.VCENTER);
                break;
                
        }
}
        

 
    
    /**
     * Called when a key is pressed.
     */
    protected  void keyPressed(int keyCode) {
        if(keyCode < 0){
            stop();
            doTimerStop();
            midlet.GameCanvasMenu();
        }
    }
    
    /**
     * Called when a key is released.
     */
    protected  void keyReleased(int keyCode) {
    }
    
    /**
     * Called when a key is repeated (held down).
     */
    protected  void keyRepeated(int keyCode) {
    }
    
    /**
     * Called when the pointer is dragged.
     */
    protected  void pointerDragged(int x, int y) {
    }
    
    /**
     * Called when the pointer is pressed.
     */
    protected  void pointerPressed(int x, int y) {
    }
    
    /**
     * Called when the pointer is released.
     */
    protected  void pointerReleased(int x, int y) {
    }
    
    /**
     * Called when action should be handled
     */
    

    public synchronized void start() {
        mainThread = new Thread(this);
        mainThread.start();
        startTime = System.currentTimeMillis();
    }
    
    public void init(){
       isPaused = false; 
       score = 0;
       stage = STARTING;
       LeftTime = TIMEPERSTAGE;
       StageNum = 1;
       //startTime = System.currentTimeMillis();
       post.InitPost();
       rabit.InitRabitLocus();
       balloon.InitBalloonLocus();
       chicken.setXincrement(5);
       chicken.InitAnimalLocus();      
       bird.InitBirdLocus();
       duck.InitBirdLocus();
       fly.InitFlyLocus();
       pig.setXincrement(15);
       pig.InitAnimalLocus();       
       for(int i = 0;i<size;i++){
           flag[i] = false;
       }
       InputStream is = getClass().getResourceAsStream("qiang.wav");
        try {
            bulletPlayer = Manager.createPlayer(is,"audio/X-wav");
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
       
    }

    public void run() {        
        while(true){
           if(isPaused){
                try {
                    mainThread.sleep(80);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -