import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.Random;
public class RaidenCanvas extends GameCanvas implements Runnable
{
private int CanvasWidth = getWidth();
private int CanvasHeight = getHeight();
private Image image;
private Image imgState;
private Image imgBack1;
private Image imgBack2;
private Image imgBack3;
private Image imgExplored;
private Image imgLife;
private Image num[];
private static final int MILLIS_PER_TICK = 50;
private Player player;
private final Graphics g;
private Bullet []bullets = new Bullet[3];
private Enemy1 enemy1;
private Enemy2 enemy2;
private Enemy3456[]enemy3456 = new Enemy3456[8];
private int Enemy3456Cnt;
private int backY;
private int score=0;
private int life = 2;
private Random random;
private int i, j;
private volatile Thread animationThread = null;
private boolean isPaused = false;
private boolean isWin = false;
private boolean isFail = false;
private int energy = 40;
private Bonus bonus;
private boolean isExplored;
private int expX, expY;
private int bonusCnt;
private RaidenMIDlet midlet;
private int fontWidth,fontHeight;
private Font font;
private Image imgWin;
private Image imgFail;
private Audio audio;
public RaidenCanvas(RaidenMIDlet midlet)
{
super(false); // suppress key events for game keys
this.midlet = midlet;
setFullScreenMode(true);
CanvasHeight = getHeight();
g = getGraphics();
random = new Random();
font = Font.getFont(Font. FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_LARGE);
fontHeight = font.getHeight();
fontWidth = font.charWidth('雷');
load();
init();
}
public synchronized void start()
{
animationThread = new Thread(this);
animationThread.start();
}
public synchronized void stop()
{
animationThread = null;
}
public void init()
{ isPaused = false;
isWin = false;
isFail = false;
score =0;
backY = CanvasHeight - imgBack1.getHeight();
player.init();
enemy1.init();
enemy2.init();
for (i = 0; i < 8; i++)
{
enemy3456[i].init();
}
for (i = 0; i < 3; i++)
{
bullets[i].setAlive(false);
}
life = 2;
energy = 40;
Enemy3456Cnt=0;
bonusCnt=0;
isExplored = false;
expX=0;
expY=0;
bonus.setAlive(false);
if(midlet.set[RaidenMIDlet.AUDIO])audio.playSound(Audio.START);
}
private void load()
{
audio = Audio.getInstance();
image = RaidenMIDlet.createImage("/player.png");
player = new Player(image, image.getWidth(), image.getHeight());
player.setCanvasSize(CanvasWidth, CanvasHeight);
image = RaidenMIDlet.createImage("/bullet.png");
bullets[0] = new Bullet(image, image.getWidth(), image.getHeight());
bullets[1] = new Bullet(image, image.getWidth(), image.getHeight());
bullets[2] = new Bullet(image, image.getWidth(), image.getHeight());
for (i = 0; i < 3; i++)
{
bullets[i].setCanvasSize(CanvasWidth, CanvasHeight);
}
image = RaidenMIDlet.createImage("/e1.png");
enemy1 = new Enemy1(image, image.getWidth(), image.getHeight());
enemy1.setCanvasSize(CanvasWidth, CanvasHeight);
// enemy1.setAlive(true);
image = RaidenMIDlet.createImage("/e2.png");
enemy2 = new Enemy2(image, image.getWidth(), image.getHeight());
enemy2.setCanvasSize(CanvasWidth, CanvasHeight);
// enemy2.setAlive(true);
image = RaidenMIDlet.createImage("/e3.png");
enemy3456[0] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
enemy3456[4] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
image = RaidenMIDlet.createImage("/e4.png");
enemy3456[1] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
enemy3456[5] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
image = RaidenMIDlet.createImage("/e5.png");
enemy3456[2] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
enemy3456[6] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
image = RaidenMIDlet.createImage("/e6.png");
enemy3456[3] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
enemy3456[7] = new Enemy3456(image, image.getWidth(), image.getHeight())
;
image = RaidenMIDlet.createImage("/bonus.png");
bonus = new Bonus(image, image.getWidth(), image.getHeight() / 3);
bonus.setCanvasSize(CanvasWidth, CanvasHeight);
for (i = 0; i < 8; i++)
{
enemy3456[i].setCanvasSize(CanvasWidth, CanvasHeight);
}
imgState = RaidenMIDlet.createImage("/energy_bar.png");
imgBack1 = RaidenMIDlet.createImage("/back_img1.png");
imgBack2 = RaidenMIDlet.createImage("/back_img2.png");
imgBack3 = RaidenMIDlet.createImage("/back_img3.png");
imgExplored = RaidenMIDlet.createImage("/explored.png");
imgLife = RaidenMIDlet.createImage("/Life.png");
num = new Image[10];
image = RaidenMIDlet.createImage("/num.png");
for (i = 0; i <= 9; i++)
{
num[i] = Image.createImage(7, 11);
Graphics g = num[i].getGraphics();
g.drawImage(image, 0, -i* 11, g.TOP|g.LEFT);
}
imgWin = RaidenMIDlet.createImage("/win.png");
imgFail = RaidenMIDlet.createImage("/fail.png");
}
public void run()
{
Thread currentThread = Thread.currentThread();
try
{
// This ends when animationThread is set to null, or when
// it is subsequently set to a new thread; either way, the
// current thread should terminate
while (currentThread == animationThread)
{
long startTime = System.currentTimeMillis();
// Don't advance game or draw if canvas is covered by
// a system screen.
if (!isPaused)
{
input();
tick();
draw();
}
long timeTaken = System.currentTimeMillis() - startTime;
if (timeTaken < MILLIS_PER_TICK)
{
synchronized(this)
{
wait(MILLIS_PER_TICK - timeTaken);
}
}
else
{
currentThread.yield();
}
}
}
catch (InterruptedException e)
{
// won't be thrown
}
}
protected void keyPressed(int keyCode)
{
if(isWin||isFail)midlet.endGame(score);
//System.out.println(keyCode)
if (getGameAction(keyCode) == FIRE) {
for (i = 0; i < 3; i++)
{
if (bullets[i].isAlive() == false)
{
bullets[i].setAlive(player.getRefPixelX() - 6,
player.getY());
break;
}
}
}else if(keyCode == -7){
//暂停游戏
isPaused = true;
midlet.stopGame();
}
}
public void resumeGame(){
isPause
雷电游戏程序、代码,J2ME
需积分: 9 10 浏览量
2009-01-09
08:17:04
上传
评论 1
收藏 433KB RAR 举报
sforiz
- 粉丝: 176
- 资源: 39
最新资源
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- htmlzwbjq_downyi.com.zip
- 无头单向非循环链表的实现(Test.c)
- 无头单向非循环链表的实现(SList.c)
- 浏览器重定向插件更新文件
- SSA-BP麻雀算法优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
- 粒子群算法优化BP神经网络PSO-BP的MATLAB代码(数值预测)
- 基于Springboot的一起看书平台.zip
- 无头单向非循环链表的实现(SList.h)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈