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

📄 gfanimationcanvas.java

📁 坦克大战
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
// Decompiled by 204 v0.2. Copyright 1997-2001 RainForest.    
//204                                                                       
                                                                                               
                

import java.io.PrintStream;
import java.util.*;
import javax.microedition.lcdui.*;

public class GFAnimationCanvas extends Canvas
     implements CommandListener
{

     public GFAnimationCanvas(GroundForce groundforce)
     {
          bck = null;
          points = null;
          gameover = null;
          life = null;
          upperBar = null;
          lowerBar = null;
          blackout = null;
          levelComplete = null;
          ex1 = null;
          ex2 = null;
          ex3 = null;
          ex4 = null;
          ex5 = null;
          user = null;
          userN = null;
          userE = null;
          userS = null;
          userW = null;
          missile = null;
          enemy1 = null;
          enemy2 = null;
          enemyN = null;
          enemyE = null;
          enemyS = null;
          enemyW = null;
          barrel = null;
          whichBonusImage = null;
          startClipX = 0;
          xSize = 0;
          startClipY = 0;
          ySize = 0;
          changeDisplay = false;
          gameOver = false;
          userMoving = false;
          userFire = false;
          userMissEx = false;
          displayEnemy1 = false;
          resetEnemy1 = true;
          en1TargetAcquired = false;
          enemy1MissDisplay = false;
          countEn1MissTimer = true;
          en1MissEx = false;
          en1ProxEx = false;
          displayEnemy2 = false;
          resetEnemy2 = true;
          en2TargetAcquired = false;
          enemy2MissDisplay = false;
          countEn2MissTimer = true;
          en2MissEx = false;
          en2ProxEx = false;
          quad1Occupied = false;
          quad2Occupied = false;
          quad3Occupied = false;
          quad4Occupied = false;
          resetBonus = true;
          displayBonus = false;
          delayBonus = false;
          checkBonusDisplay1 = false;
          checkBonusDisplay2 = false;
          displayLevelComplete = false;
          resetLevel = false;
          midlet = groundforce;
          width = getWidth();
          height = getHeight();
          random = new Random();
          cmClose = new Command("Close", 1, 1);
          addCommand(cmClose);
          setCommandListener(this);
          initialiseItems();
          tm = new Timer();
          tt = new GFAnimateTimerTask(this);
          tm.schedule(tt, 0L, 100L);
     }

     protected void showNotify()
     {
          theFont = Font.getFont(0, 0, 8);
          if(height < 110)
          {
               heightDiff = 110 - height;
               heightDiff = heightDiff / 2;
          }
          else
          {
               heightDiff = 0;
          }
          if(width < 110)
          {
               widthDiff = 110 - width;
               widthDiff = widthDiff / 2;
          }
          else
          {
               widthDiff = 0;
          }
          actualSizeX = (width - 110) / 2;
          startClipX = 0 + actualSizeX;
          xSize = width - actualSizeX * 2;
          actualSizeY = (height - 110) / 2;
          startClipY = 0 + actualSizeY;
          ySize = height - actualSizeY * 2;
          upperY = startClipY;
          lowerY = startClipY + ySize;
          leftX = startClipX;
          rightX = startClipX + xSize;
          bckgrndX = width / 2 + widthDiff;
          bckgrndY = height / 2 - heightDiff;
          scorePosY = upperY + (0 + heightDiff);
          scorePosX = leftX + (80 - widthDiff);
          pointsX = leftX + (95 - widthDiff);
          pointsY = upperY + (5 + heightDiff);
          gameOverX = width / 2;
          gameOverY = height / 2;
          stringTheScore = "0";
          theScore = 0;
          theLife = 4;
          stringTheLife = "4";
          userX = leftX + (60 + widthDiff);
          userY = upperY + (90 - heightDiff);
          lifeBarImageX = leftX + (13 + widthDiff);
          lifeBarImageY = upperY + (5 + heightDiff);
          movingLifeBarImageX = leftX + (13 + widthDiff);
          userDirection = 1;
          val1 = upperY + (10 + heightDiff);
          val2 = lowerY - (10 + heightDiff);
          val3 = leftX + (10 + widthDiff);
          val4 = rightX - (10 + widthDiff);
          userExCycle = 0;
          enemy1Dir = 1;
          enemy2Dir = 1;
          val5 = leftX + (10 + widthDiff);
          val6 = upperY + (10 + heightDiff);
          enemy1Life = 4;
          enemy1TimerFire = 30;
          en1MissDir = 1;
          enemy1CountFire = 0;
          enemy2Life = 4;
          enemy2TimerFire = 30;
          en2MissDir = 1;
          enemy2CountFire = 0;
          val7 = width / 2;
          val8 = height / 2;
          whichBonus = 0;
          delayBonusCounter = 0;
          displayBonusCounter = 0;
          countBonusImage = 0;
          whichBonusType = 1;
          val9 = leftX + (10 + widthDiff);
          val10 = upperY + (10 + heightDiff);
          val11 = leftX + (13 + widthDiff);
          displayLevelCompleteCounter = 0;
          enemyDestroyed = 0;
          levelLimit = 10;
     }

     public void initialiseItems()
     {
          missile = Image.createImage(2, 2);
          Graphics g = missile.getGraphics();
          g.setColor(255, 255, 255);
          g.fillRect(0, 0, 2, 2);
          blackout = Image.createImage(23, 4);
          Graphics g1 = blackout.getGraphics();
          g1.setColor(0, 0, 0);
          g1.fillRect(0, 0, 23, 4);
          try
          {
               bck = Image.createImage("/bck1.png");
               gameover = Image.createImage("/gameover.png");
               life = Image.createImage("/life.png");
               upperBar = Image.createImage("/upperBar.png");
               lowerBar = Image.createImage("/lowerBar.png");
               levelComplete = Image.createImage("/nextWave.png");
               ex1 = Image.createImage("/ex1.png");
               ex2 = Image.createImage("/ex2.png");
               ex3 = Image.createImage("/ex3.png");
               ex4 = Image.createImage("/ex4.png");
               ex5 = Image.createImage("/ex5.png");
               userN = Image.createImage("/userTankN.png");
               userE = Image.createImage("/userTankE.png");
               userS = Image.createImage("/userTankS.png");
               userW = Image.createImage("/userTankW.png");
               enemyN = Image.createImage("/enemyTankN.png");
               enemyE = Image.createImage("/enemyTankE.png");
               enemyS = Image.createImage("/enemyTankS.png");
               enemyW = Image.createImage("/enemyTankW.png");
               barrel = Image.createImage("/barrel.png");
          }
          catch(Exception exception)
          {
               System.out.println("error with image load: " + exception);
          }
          user = userN;
          enemy1 = enemyN;
          enemy2 = enemyN;
          whichBonusImage = barrel;
     }

     public void paint(Graphics g)
     {
          g.setColor(0, 0, 0);
          g.fillRect(0, 0, width, height);
          g.setClip(startClipX, startClipY, xSize, ySize);
          g.drawImage(bck, bckgrndX, bckgrndY, 3);
          if(theLife <= 0)
          {
               gameOver = true;
               gameOver();
          }
          if(enemyDestroyed >= levelLimit)
          {
               displayLevelComplete = true;
               displayLevelCompleteCounter = 0;
               enemyDestroyed = 0;
               levelLimit += 10;
               resetEnemy1 = false;
               displayEnemy1 = false;
               enemy1MissDisplay = false;
               en1MissEx = false;
               en1ProxEx = false;
               resetEnemy2 = false;
               displayEnemy2 = false;
               enemy2MissDisplay = false;
               en2MissEx = false;
               en2ProxEx = false;
               resetBonus = false;
               displayBonus = false;
               delayBonus = false;
               userFire = false;
               userMissEx = false;
               userMoving = false;
               countEn2MissTimer = false;
               countEn1MissTimer = false;
          }
          if(resetLevel)
          {
               resetEnemy1 = true;
               resetEnemy2 = true;
               resetBonus = true;
               checkBonusDisplay1 = false;
               checkBonusDisplay2 = false;
               theLife = 4;
               stringTheLife = "4";
               userX = leftX + (60 + widthDiff);
               userY = upperY + (90 - heightDiff);
               movingLifeBarImageX = leftX + (13 + widthDiff);
               if(enemy1TimerFire <= 5)
               {
                    enemy1TimerFire = 5;
                    enemy2TimerFire = 5;
               }
               else
               {
                    enemy1TimerFire -= 5;
                    enemy2TimerFire -= 5;
               }
               enemy1CountFire = 0;
               enemy2CountFire = 0;
               countEn2MissTimer = false;
               countEn1MissTimer = false;
               displayBonusCounter = 0;
               countBonusImage = 0;
               theScore += 500;
               changeDisplay = true;
               resetLevel = false;
          }
          if(resetBonus)
          {
               bonusX = ((random.nextInt() >>> 1) % 8) * 10 + val9;
               bonusY = ((random.nextInt() >>> 1) % 8) * 10 + val10;
               delayBonusCounter = 0;
               displayBonusCounter = 0;
               displayBonus = false;
               resetBonus = false;
               delayBonus = true;
               if(countBonusImage >= 1)
               {
                    whichBonusType = 1;
                    whichBonusImage = barrel;
                    countBonusImage = 0;
               }
               else
               if(countBonusImage == 0)
               {
                    whichBonusType = 0;
                    countBonusImage = 1;
                    whichBonusImage = life;
               }
          }
          if(delayBonus)
               if(delayBonusCounter > 50)
               {
                    delayBonus = false;
                    displayBonusCounter = 0;
                    displayBonus = true;
                    checkBonusDisplay1 = false;
                    checkBonusDisplay2 = false;
               }
               else
               {
                    delayBonusCounter++;
               }
          if(displayBonus)
          {
               proxEn2X = Math.abs(enemy2X - bonusX);
               proxEn2Y = Math.abs(enemy2Y - bonusY);
               if((proxEn2X < 10) & (proxEn2Y < 15))
               {
                    delayBonus = false;
                    displayBonusCounter = 0;
                    delayBonusCounter = 0;
                    displayBonus = false;
                    resetBonus = true;
               }
               proxEn1X = Math.abs(enemy1X - bonusX);
               proxEn1Y = Math.abs(enemy1Y - bonusY);
               if((proxEn1X < 10) & (proxEn1Y < 15))
               {
                    delayBonus = false;
                    displayBonusCounter = 0;
                    delayBonusCounter = 0;
                    displayBonus = false;
                    resetBonus = true;
               }
               proxEn1X = Math.abs(userX - bonusX);
               proxEn1Y = Math.abs(userY - bonusY);
               if((proxEn1X < 10) & (proxEn1Y < 15))
               {
                    delayBonus = false;
                    displayBonusCounter = 0;
                    delayBonusCounter = 0;
                    displayBonus = false;
                    resetBonus = true;
                    theScore += 50;
                    changeDisplay = true;
                    if(whichBonusType == 0)
                    {
                         movingLifeBarImageX = val11;
                         theLife = 4;
                    }
               }
               if(displayBonusCounter > 100)
               {
                    delayBonus = false;
                    displayBonusCounter = 0;
                    delayBonusCounter = 0;
                    displayBonus = false;
                    resetBonus = true;
               }
               else
               {
                    displayBonusCounter++;
               }
          }
          if(resetEnemy2)
          {
               resetEnemy2 = false;
               displayEnemy2 = true;
               if((enemy1X >= val7) & (enemy1Y < val8))
                    quad1Occupied = true;
               else
               if((enemy1X < val7) & (enemy1Y < val8))
                    quad2Occupied = true;
               else
               if((enemy1X >= val7) & (enemy1Y >= val8))
                    quad3Occupied = true;
               else
               if((enemy1X < val7) & (enemy1Y >= val8))
                    quad4Occupied = true;
               if((userX >= val7) & (userY < val8))
                    quad1Occupied = true;
               else
               if((userX < val7) & (userY < val8))
                    quad2Occupied = true;
               else
               if((userX >= val7) & (userY >= val8))
                    quad3Occupied = true;
               else
               if((userX < val7) & (userY >= val8))
                    quad4Occupied = true;
               if(!quad1Occupied)
               {
                    enemy2X = val7 + 35;
                    enemy2Y = val8 - 35;
               }
               else
               if(!quad4Occupied)
               {

⌨️ 快捷键说明

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