?? gfanimationcanvas.java
字號:
//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)
{
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 + -