📄 hero.java
字号:
/*
* @(#)Hero.java 0.20 02/11/07
* Copyright (c) 2002 InterScape Creations. All Rights Reserved.
*/
import javax.microedition.lcdui.*;
class Hero
{
private static Graphics g = null;
private Image imgHero;
private Image imgCurrentDraw;
private Image imgHeroLeft;
private Image imgHeroRight;
private Image imgHeroUp;
private Image imgHeroDown;
private Image imgHeroLeft1;
private Image imgHeroRight1;
private Image imgHeroUp1;
private Image imgHeroDown1;
private Image imgHeroLeft2;
private Image imgHeroRight2;
private Image imgHeroUp2;
private Image imgHeroDown2;
private Image imgExplode;
public int status = 0; //1--normal 2--start 7--explode
public int posX, posY;
public int direction;
public int speed;
public boolean shootFlag = false;
public int bulletNo;
public int bulletLevel = 0; //symbol the hero's bullet speed
public int count;
public int frameWidth, frameHeight;
public boolean isCapped;
boolean grassPaint = false;
TankCanvas canvas;
Hero(TankCanvas canvas)
{
posX = 0;//sony 108;
posY = 0;//sony 148;
this.canvas = canvas;
status = 0;
count = 40;
bulletLevel = 0;
direction = 3; // 1--left 2--right 3--up 4--down
// Load the object images
imgHero = canvas.createImage("/tank_p.png");
frameWidth = imgHero.getWidth()/4;
frameHeight = imgHero.getHeight();
imgHeroLeft = Image.createImage(frameWidth, frameHeight);
g = imgHeroLeft.getGraphics();
g.drawImage(imgHero, 0, 0, g.TOP | g.LEFT);
imgHeroRight = Image.createImage(frameWidth, frameHeight);
g = imgHeroRight.getGraphics();
g.drawImage(imgHero, - frameWidth, 0, g.TOP | g.LEFT);
imgHeroUp = Image.createImage(frameWidth, frameHeight);
g = imgHeroUp.getGraphics();
g.drawImage(imgHero, - frameWidth * 2, 0, g.TOP | g.LEFT);
imgHeroDown = Image.createImage(frameWidth, frameHeight);
g = imgHeroDown.getGraphics();
g.drawImage(imgHero, - frameWidth * 3, 0, g.TOP | g.LEFT);
imgHero = canvas.createImage("/tank_shell.png");
imgHeroLeft1 = Image.createImage(frameWidth, frameHeight);
g = imgHeroLeft1.getGraphics();
g.drawImage(imgHero, 0, - frameHeight, g.TOP | g.LEFT);
imgHeroRight1 = Image.createImage(frameWidth, frameHeight);
g = imgHeroRight1.getGraphics();
g.drawImage(imgHero, - frameWidth, - frameHeight, g.TOP | g.LEFT);
imgHeroUp1 = Image.createImage(frameWidth, frameHeight);
g = imgHeroUp1.getGraphics();
g.drawImage(imgHero, - frameWidth * 2, - frameHeight, g.TOP | g.LEFT);
imgHeroDown1 = Image.createImage(frameWidth, frameHeight);
g = imgHeroDown1.getGraphics();
g.drawImage(imgHero, - frameWidth * 3, - frameHeight, g.TOP | g.LEFT);
imgHeroLeft2 = Image.createImage(frameWidth, frameHeight);
g = imgHeroLeft2.getGraphics();
g.drawImage(imgHero, 0, 0, g.TOP | g.LEFT);
imgHeroRight2 = Image.createImage(frameWidth, frameHeight);
g = imgHeroRight2.getGraphics();
g.drawImage(imgHero, - frameWidth, 0, g.TOP | g.LEFT);
imgHeroUp2 = Image.createImage(frameWidth, frameHeight);
g = imgHeroUp2.getGraphics();
g.drawImage(imgHero, - frameWidth * 2, 0, g.TOP | g.LEFT);
imgHeroDown2 = Image.createImage(frameWidth, frameHeight);
g = imgHeroDown2.getGraphics();
g.drawImage(imgHero, - frameWidth * 3, 0, g.TOP | g.LEFT);
g = null;
imgCurrentDraw = imgHeroUp1;//当前绘制为闪烁向上
imgExplode = canvas.createImage("/explode.png");//爆炸
}
public void paint(Graphics g)
{
int fillposX = posX;//位置点
int fillposY = posY;//位置点
int fillwidth = frameWidth;
int fillheigh = frameHeight;
speed = canvas.tileW;
g.setColor(0x0);
grassPaint = false;
if (((direction & 0x10) > 0) && (status < 2))
{
switch (direction & 0x0f)
{
case 1:
if ((posX > canvas.mapOffsetX) && !isMapCollide())
{
posX -= speed;
fillposX = posX + frameWidth;
fillposY = posY;
fillwidth = speed;
fillheigh = frameHeight;
}
break;
case 2:
if ((posX < (canvas.mapOffsetX +
canvas.mapWidth - frameWidth)) &&
!isMapCollide())
{
posX += speed;
fillposX = posX - speed;
fillposY = posY;
fillwidth = speed;
fillheigh = frameHeight;
}
break;
case 3:
if ((posY > canvas.mapOffsetY) && !isMapCollide())
{
posY -= speed;
fillposX = posX;
fillposY = posY + frameHeight;
fillwidth = frameWidth;
fillheigh = speed;
}
break;
case 4:
if ((posY < (canvas.mapOffsetY +
canvas.mapHeight - frameHeight)) &&
!isMapCollide())
{
posY += speed;
fillposX = posX;
fillposY = posY - speed;
fillwidth = frameWidth;
fillheigh = speed;
}
default:
break;
}
g.fillRect(fillposX, fillposY, fillwidth, fillheigh);
}
if (status == 0)
{
if (count > 0)
{
if ((count & 1) > 0)
{
switch (direction & 0x0f)
{
case 1:
imgCurrentDraw = imgHeroLeft1;
break;
case 2:
imgCurrentDraw = imgHeroRight1;
break;
case 3:
imgCurrentDraw = imgHeroUp1;
break;
case 4:
imgCurrentDraw = imgHeroDown1;
default:
break;
}
}
else
{
switch (direction & 0x0f)
{
case 1:
imgCurrentDraw = imgHeroLeft2;
break;
case 2:
imgCurrentDraw = imgHeroRight2;
break;
case 3:
imgCurrentDraw = imgHeroUp2;
break;
case 4:
imgCurrentDraw = imgHeroDown2;
default:
break;
}
}
count--;
}
else
{
status = 1;
switch (direction & 0x0f)
{
case 1:
imgCurrentDraw = imgHeroLeft;
break;
case 2:
imgCurrentDraw = imgHeroRight;
break;
case 3:
imgCurrentDraw = imgHeroUp;
break;
case 4:
imgCurrentDraw = imgHeroDown;
default:
break;
}
}
g.drawImage(imgCurrentDraw, posX, posY, g.TOP | g.LEFT);
}
else if (status == 2)
{
g.drawImage(imgExplode, posX, posY, g.TOP | g.LEFT);
if (count > 0)
count--;
else
{
g.fillRect(posX, posY, imgExplode.getWidth(),
imgExplode.getHeight());
if (canvas.life > 1)
{
canvas.life--;
posX = canvas.mapOffsetX +
canvas.mapWidth / 2-
(canvas.tileWidth * 2+2) - frameWidth - 2;
posY = canvas.mapOffsetY +
canvas.mapHeight - frameHeight - 2;
status = 0;
count = 40;
direction = 3;
imgCurrentDraw = imgHeroUp1;
}else canvas.isLose = true;
}
}else
{
if (isCapped)
{
if ((count & 1) > 0)
{
switch (direction & 0x0f)
{
case 1:
g.drawImage(imgHeroLeft2, posX, posY, g.TOP | g.LEFT);
break;
case 2:
g.drawImage(imgHeroRight2, posX, posY, g.TOP | g.LEFT);
break;
case 3:
g.drawImage(imgHeroUp2, posX, posY, g.TOP | g.LEFT);
break;
case 4:
g.drawImage(imgHeroDown2, posX, posY, g.TOP | g.LEFT);
default:
break;
}
}
else
{
switch (direction & 0x0f)
{
case 1:
g.drawImage(imgHeroLeft1, posX, posY, g.TOP | g.LEFT);
break;
case 2:
g.drawImage(imgHeroRight1, posX, posY, g.TOP | g.LEFT);
break;
case 3:
g.drawImage(imgHeroUp1, posX, posY, g.TOP | g.LEFT);
break;
case 4:
g.drawImage(imgHeroDown1, posX, posY, g.TOP | g.LEFT);
default:
break;
}
}
count++;
}
else
{
switch (direction & 0x0f)
{
case 1:
g.drawImage(imgHeroLeft, posX, posY, g.TOP | g.LEFT);
break;
case 2:
g.drawImage(imgHeroRight, posX, posY, g.TOP | g.LEFT);
break;
case 3:
g.drawImage(imgHeroUp, posX, posY, g.TOP | g.LEFT);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -