📄 enemy.java
字号:
/* * @(#)Enemy.java 0.20 02/11/07 * Copyright (c) 2002 InterScape Creations. All Rights Reserved. */import javax.microedition.lcdui.*;import java.util.Random;class Enemy implements Runnable { private static Graphics G = null; static Random myrandom = new Random(); boolean alive; int posX, posY; int direction; int speed; int sp; boolean shootFlag; int bulletNo, bulletCnt; int bulletLevel; //symbol the enemy's bullet speed Image enemyImage; Image drawEnemy; Image enemyLeft; Image enemyRight; Image enemyUp; Image enemyDown; int frameWidth, frameHeight; boolean ifTimer; int kind; int lifeCount = 0; int bulletCount; boolean grassPaint = false; Enemy() { ifTimer = false; shootFlag = false; bulletLevel = 0; direction = 0x14; // 1--left 2--right 3--up 4--down // Load the object images try { enemyImage = Image.createImage("/tank_en.png"); frameWidth = enemyImage.getWidth()/4; frameHeight = enemyImage.getHeight(); enemyLeft = Image.createImage(frameWidth, frameHeight); G = enemyLeft.getGraphics(); G.drawImage(enemyImage, 0, 0, 20); enemyRight = Image.createImage(frameWidth, frameHeight); G = enemyRight.getGraphics(); G.drawImage(enemyImage, -frameWidth, 0, 20); enemyUp = Image.createImage(frameWidth, frameHeight); G = enemyUp.getGraphics(); G.drawImage(enemyImage, -frameWidth*2, 0, 20); enemyDown = Image.createImage(frameWidth, frameHeight); G = enemyDown.getGraphics(); G.drawImage(enemyImage, -frameWidth*3, 0, 20); G = null; drawEnemy = enemyDown; } catch(Exception exception) { System.out.println(exception); } } //add by johnson to make all kinds of tankers //kind: 0-ordinary tanker, 1-red tanker, 2-iron tanker, 3-clever tanker public Enemy(int kind) { this.kind = kind; frameWidth = ImageHelper.frameWidth; frameHeight = ImageHelper.frameHeight; switch(kind){ case 0: // System.out.println("normal tanker"); speed = SuperTank.canvas.tileW/2; sp = speed; shootFlag = false; bulletCount = 50; bulletLevel = 0; direction = 0x14; // 1--left 2--right 3--up 4--down // Load the object images /* try { enemyImage = Image.createImage("/tank_en.png"); } catch (Exception exception) { System.out.println(exception); }*/ enemyLeft = ImageHelper.enemyLeft; enemyRight = ImageHelper.enemyRight; enemyUp = ImageHelper.enemyUp; enemyDown = ImageHelper.enemyDown; break; case 1: //red tanker speed = SuperTank.canvas.tileW/2; sp = speed; shootFlag = false; bulletLevel = 0; bulletCount = 25; direction = 0x14; // 1--left 2--right 3--up 4--down // Load the object images /* try { enemyImage = Image.createImage("/redtank.png"); } catch (Exception exception) { System.out.println(exception); }*/ enemyLeft = ImageHelper.enemyLeftRed; enemyRight = ImageHelper.enemyRightRed; enemyUp = ImageHelper.enemyUpRed; enemyDown = ImageHelper.enemyDownRed; break; case 2: //iron tanker // System.out.println("iron tanker"); speed = SuperTank.canvas.tileW/2; sp = speed; shootFlag = false; bulletLevel = 0; bulletCount = 50; lifeCount = 3; direction = 0x14; // 1--left 2--right 3--up 4--down // Load the object images /*try { enemyImage = Image.createImage("/greentank.png"); } catch (Exception exception) { System.out.println(exception); }*/ enemyLeft = ImageHelper.enemyLeftIron; enemyRight = ImageHelper.enemyRightIron; enemyUp = ImageHelper.enemyUpIron; enemyDown = ImageHelper.enemyDownIron; break; case 3: speed = SuperTank.canvas.tileW/2; sp = speed; shootFlag = false; bulletLevel = 0; bulletCount = 15; direction = 0x14; // 1--left 2--right 3--up 4--down // Load the object images /*try { enemyImage = Image.createImage("/tank_en.png"); } catch (Exception exception) { System.out.println(exception); }*/ enemyLeft = ImageHelper.enemyLeft; enemyRight = ImageHelper.enemyRight; enemyUp = ImageHelper.enemyUp; enemyDown = ImageHelper.enemyDown; break; default: break; } drawEnemy = enemyDown; /* try { frameWidth = enemyImage.getWidth() / 4; frameHeight = enemyImage.getHeight(); enemyLeft = Image.createImage(frameWidth, frameHeight); G = enemyLeft.getGraphics(); G.drawImage(enemyImage, 0, 0, 20); enemyRight = Image.createImage(frameWidth, frameHeight); G = enemyRight.getGraphics(); G.drawImage(enemyImage, -frameWidth, 0, 20); enemyUp = Image.createImage(frameWidth, frameHeight); G = enemyUp.getGraphics(); G.drawImage(enemyImage, -frameWidth * 2, 0, 20); enemyDown = Image.createImage(frameWidth, frameHeight); G = enemyDown.getGraphics(); G.drawImage(enemyImage, -frameWidth * 3, 0, 20); G = null; drawEnemy = enemyDown; } catch (Exception exception) { System.out.println(exception); }*/ } /* public void setProperty(int kind){ }*/ public void run() { } synchronized void paint(Graphics g) { int fillposX = posX; int fillposY = posY; int fillwidth, fillheigh; int i; fillwidth = frameWidth; fillheigh = frameHeight; if(!ifTimer){ if (!shootFlag && ( (myrandom.nextInt() & 2) == 0) && (bulletCnt == 0)) { shootFlag = true; i = 0; for (i = 1; i < SuperTank.canvas.maxBullet; i++) { if (SuperTank.canvas.bulletAlive[i] == false) break; } if ( (i > 0) && (i < SuperTank.canvas.maxBullet)) { bulletCnt = bulletCount; bulletNo = i; SuperTank.canvas.fireBullet(bulletNo, direction, posX, posY, 3); } } } if ( bulletCnt > 0 ) bulletCnt --; grassPaint = false; if (ismapCollide()) direction = tankAI(); g.setColor(0x0); //add by johnson to set the timer if(ifTimer){ speed = 0; }else{ speed = sp; } switch(direction & 0x0f) { case 1: //left if ((posX > SuperTank.canvas.mapOffsetX) && !ismapCollide()){ posX -= speed; fillposX = posX + frameWidth; fillposY = posY; fillwidth = speed; fillheigh = frameHeight; } break; case 2: //right if ((posX < (SuperTank.canvas.mapOffsetX+SuperTank.canvas.mapWidth - frameWidth)) && !ismapCollide()){ posX += speed; fillposX = posX - speed; fillposY = posY; fillwidth = speed; fillheigh = frameHeight; } break; case 3: //up if ((posY > SuperTank.canvas.mapOffsetY) && !ismapCollide()){ posY -= speed; fillposX = posX; fillposY = posY + frameHeight; fillwidth = frameWidth; fillheigh = speed; } break; case 4: //down if ((posY<(SuperTank.canvas.mapOffsetY+SuperTank.canvas.mapHeight - frameHeight)) && !ismapCollide()){ posY += speed; fillposX = posX; fillposY = posY - speed; fillwidth = frameWidth; fillheigh = speed; } default: break; } g.fillRect(fillposX, fillposY, fillwidth, fillheigh);// DirectGraphics dg = DirectUtils.getDirectGraphics(g); switch(direction & 0x0f) { case 1: //left// dg.drawImage(drawEnemy, posX, posY, g.TOP|g.LEFT, DirectGraphics.ROTATE_90); g.drawImage(enemyLeft, posX, posY, g.TOP|g.LEFT); break; case 2: //right// dg.drawImage(drawEnemy, posX, posY, g.TOP|g.LEFT, DirectGraphics.ROTATE_270); g.drawImage(enemyRight, posX, posY, g.TOP|g.LEFT); break; case 3: //up// g.drawImage(drawEnemy, posX, posY, g.TOP|g.LEFT); g.drawImage(enemyUp, posX, posY, g.TOP|g.LEFT); break; case 4: //down// dg.drawImage(drawEnemy, posX, posY, g.TOP|g.LEFT, DirectGraphics.ROTATE_180);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -