📄 hunt_canvas.java
字号:
/*
* 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 + -