📄 combattank34.java
字号:
if(Wall[j].Bulletdestoried()){
Wall[j].restore();
tankbulletdestory = true;
}
if(Wall[j].walldestoried())
Wall[j] = null;
}
}
}
}
if(tankBullet[i] != null){
for(int j = 0; j < SteelWall.length; j++){
if(SteelWall[j] != null && tankBullet[i] != null){
if((SteelWall[j].getborder()).intersects(tankBullet[i].getbulletborder())){
SteelWall[j].damageWall(tankBullet[i].getbulletborder(), bulletpower, tankBullet[i].getbulletdirection());
if(SteelWall[j].Bulletdestoried()){
SteelWall[j].restore();
tankbulletdestory = true;
}
if(SteelWall[j].walldestoried())
SteelWall[j] = null;
}
}
}
}
if(tankBullet[i] != null){
for(int j = 0; j < Enemyindex; j++){
if(E1[j] != null){
if((E1[j].getE1()).intersects(tankBullet[i].getbulletborder())){
Score +=100;
BB[indexOfBB] = new bigBomb(E1[j].getxPos(), E1[j].getyPos());
indexOfBB++;
tankbulletdestory = true;
if(E1[j].isFlashing()){
PowerUp[indexOfpu] = new powerup();
indexOfpu++;
}
E1[j] = null;
if(Enemyindex < Enemylimits)
EnemyNo++;
break;
}
}
if(E2[j] != null){
if((E2[j].getE1()).intersects(tankBullet[i].getbulletborder())){
Score +=200;
BB[indexOfBB] = new bigBomb(E2[j].getxPos(), E2[j].getyPos());
indexOfBB++;
tankbulletdestory = true;
if(E2[j].isFlashing()){
PowerUp[indexOfpu] = new powerup();
indexOfpu++;
}
E2[j] = null;
if(Enemyindex < Enemylimits)
EnemyNo++;
break;
}
}
if(E3[j] != null){
if((E3[j].getE1()).intersects(tankBullet[i].getbulletborder())){
Score+=300;
BB[indexOfBB] = new bigBomb(E3[j].getxPos(), E3[j].getyPos());
indexOfBB++;
tankbulletdestory = true;
if(E3[j].isFlashing()){
PowerUp[indexOfpu] = new powerup();
indexOfpu++;
}
E3[j] = null;
if(Enemyindex < Enemylimits)
EnemyNo++;
break;
}
}
if(E4[j] != null){
if((E4[j].getE1()).intersects(tankBullet[i].getbulletborder())){
E4[j].hurt();
if(E4[j].getStatus() > 3){
Score+=400;
BB[indexOfBB] = new bigBomb(E4[j].getxPos(), E4[j].getyPos());
indexOfBB++;
E4[j] = null;
if(Enemyindex < Enemylimits)
EnemyNo++;
}
tankbulletdestory = true;
if(E4[j] != null){
if(E4[j].isFlashing()){
PowerUp[indexOfpu] = new powerup();
E4[j].stopFlashing();
indexOfpu++;
}
}
break;
}
}
}
}
if(tankbulletdestory){
SB[indexOfSB] = new smallBomb(tankBullet[i].getbulletposition());
indexOfSB++;
tankBullet[i] = null;
}
}
//-- enemy bullets
boolean enemybulletdestory = false;
for(int i = 0; i < Enemyindex; i++){
enemybulletdestory = false;
if(enemyBullet[i] != null){
enemyBullet[i].move();
if(!Border.contains(enemyBullet[i].getbulletposition()))
enemybulletdestory = true;
}
if(enemyBullet[i] != null){
for(int j = 0; j < Wall.length; j++){
if(Wall[j] != null && enemyBullet[i] != null){
if((Wall[j].getborder()).intersects(enemyBullet[i].getbulletborder())){
Wall[j].damageWall(enemyBullet[i].getbulletborder(),1, enemyBullet[i].getbulletdirection());
if(Wall[j].Bulletdestoried()){
Wall[j].restore();
enemybulletdestory = true;
}
if(Wall[j].walldestoried())
Wall[j] = null;
}
}
}
}
if(enemyBullet[i] != null){
for(int j = 0; j < SteelWall.length; j++){
if(SteelWall[j] != null && enemyBullet[i] != null){
if((SteelWall[j].getborder()).intersects(enemyBullet[i].getbulletborder())){
SteelWall[j].damageWall(enemyBullet[i].getbulletborder(), 1, enemyBullet[i].getbulletdirection());
if(SteelWall[j].Bulletdestoried()){
SteelWall[j].restore();
enemybulletdestory = true;
}
}
}
}
}
if(enemyBullet[i] != null){
for(int j = indexOftankBullet - 2; j <= indexOftankBullet; j++){
if(tankBullet[j] != null){
if((tankBullet[j].getbulletborder()).intersects(enemyBullet[i].getbulletborder())){
tankBullet[j] = null;
enemybulletdestory = true;
break;
}
}
}
}
if(enemyBullet[i] != null){
if((enemyBullet[i].getbulletborder()).intersects(tank.getVBorder())){
enemybulletdestory = true;
if(sheild <= 0 && tank.gettankhealth() != 2){
BB[indexOfBB] = new bigBomb(tank.getxPos(), tank.getyPos());
indexOfBB++;
if(life > 0)
life--;
if(life > 0){
tank = new Tank(223, 498, 0 , 1);
sheild = 200;
}
if(life <= 0 && sheild <= 0){
tank = new Tank(600, 800, 0 , 1);
gameover = true;
}
tankbulletNumber = 1;
bulletpower = 1;
tankbulletspeed = 7;
TBI = 7;
}
if(tank.gettankhealth() == 2){
bulletpower = 1;
tank.hurt();
tank.changeStatus(3);
}
}
}
if(enemyBullet[i] != null && Base.getImageNo() == 1){
if((enemyBullet[i].getbulletborder()).intersects(Base.getBaseborder())){
Base.doom();
BB[indexOfBB] = new bigBomb(260, 498);
indexOfBB++;
enemybulletdestory = true;
gameover = true;
}
}
if(enemybulletdestory){
SB[indexOfSB] = new smallBomb(enemyBullet[i].getbulletposition());
indexOfSB++;
enemyBullet[i] = null;
}
}
// other essential movement
if(fire_TYPED && tankBullet[indexOftankBullet - tankbulletNumber] == null && tankbulletinterval <= 0 && !drawVictoryPics && !gameover){
tankBullet[indexOftankBullet] = new bullet(tank.getxPos(), tank.getyPos(), tank.getDirection(),tankbulletspeed, bulletpower);
indexOftankBullet++;
tankbulletinterval = TBI;
}
tankbulletinterval--;
// change bomb shape
for(int i = 0; i <= indexOfSB; i++){
if(SB[i] != null){
if(SB[i].BombTimeleft() > 0)
SB[i].keepbombing();
if(SB[i].BombTimeleft() <= 0)
SB[i] = null;
}
}
for(int i = 0; i <= indexOfBB; i++){
if(BB[i] != null){
if(BB[i].BombTimeleft() > 0)
BB[i].keepbombing();
if(BB[i].BombTimeleft() <= 0)
BB[i] = null;
}
}
repaint();
}
//====================================== paint ===============================================
public void paint(Graphics g) {
// Draw the background
g.setColor(new Color(128, 64, 0));
g.fillRect(0, 0 , 610, 520);
g.setColor(Color.blue);
g.drawRect(10, 10, 501, 501);
g.drawRect(9, 9, 503, 503);
// Draw the the static image objects
//--- Draw walls
for(int i = 0; i < Wall.length; i++){
if(Wall[i] != null){
g.drawImage(WALL, Wall[i].getxPos() - 12, Wall[i].getyPos() - 12, this);
Wall[i].draw(g);
}
}
for(int i = 0; i < SteelWall.length; i++){
if(SteelWall[i] != null){
g.drawImage(STEELWALL, SteelWall[i].getxPos() - 12, SteelWall[i].getyPos() - 12, this);
SteelWall[i].draw(g);
}
}
//--- Draw rivers
for(int i = 0; i < River.length; i++)
g.drawImage(RIVER, River[i].getxPos() - 12, River[i].getyPos() - 12, this);
// Draw other moving objects
for(int i = 0; i <= indexOftankBullet; i++){
if(tankBullet[i] != null)
tankBullet[i].draw(g);
}
for(int i = 0; i < Enemyindex; i++){
if(enemyBullet[i] != null)
enemyBullet[i].draw(g);
}
// Draw base
g.drawImage(BASE[Base.getImageNo() - 1], 260 - 12, 497 - 12, this);
// Draw bombs if there is any
for(int i = 0; i <= indexOfSB; i++){
if(SB[i] != null)
SB[i].draw(g);
}
for(int i = 0; i <= indexOfBB; i++){
if(BB[i] != null)
BB[i].draw(g);
}
g.drawImage(tankImage[tank.getImageNo()], tank.getxPos() - 12, tank.getyPos() - 12, this);
// Draw the moving image objects
// the tank
g.drawImage(tankImage[tank.getImageNo()], tank.getxPos() - 12, tank.getyPos() - 12, this);
g.drawImage(tankImage[0], 520, 450 , this);
if(sheild > 0){
g.setColor(Color.red);
g.drawRect(tank.getxPos() - 13, tank.getyPos() - 13, 27, 27);
g.drawRect(tank.getxPos() - 12, tank.getyPos() - 12, 25, 25);
}
// enemy1
for(int i = 0; i < Enemyindex; i++){
if(E1[i] != null)
g.drawImage(E1Image[E1[i].getImageNo()], E1[i].getxPos() - 12, E1[i].getyPos() - 12, this);
}
// enemy2
for(int i = 0; i < Enemyindex; i++){
if(E2[i] != null)
g.drawImage(E2Image[E2[i].getImageNo()], E2[i].getxPos() - 12, E2[i].getyPos() - 12, this);
}
// enemy3
for(int i = 0; i < Enemyindex; i++){
if(E3[i] != null)
g.drawImage(E3Image[E3[i].getImageNo()], E3[i].getxPos() - 12, E3[i].getyPos() - 12, this);
}
// enemy4
for(int i = 0; i < Enemyindex; i++){
if(E4[i] != null)
g.drawImage(E4Image[E4[i].getImageNo()], E4[i].getxPos() - 12, E4[i].getyPos() - 12, this);
}
// Draw grass
for(int i = 0; i < Grass.length; i++)
Grass[i].draw(g);
// Draw Power Up images
for(int i = 0; i < indexOfpu; i++){
if(PowerUp[i] != null){
g.drawImage(PUimage[PowerUp[i].getFunction() - 1], PowerUp[i].getxPos() - 12, PowerUp[i].getyPos() - 12, this);
}
}
// draw winning pics
if(drawVictoryPics){
g.setColor(Color.lightGray);
if(GameFlow > 0 && GameFlow < 20){
g.fillRect(11, 11, 500, GameFlow*15);
g.fillRect(11, 510 - GameFlow*15, 500, GameFlow*15);
}
if(GameFlow >= 20 && GameFlow <= 208)
g.fillRect(11, 11, 500, 500);
if(GameFlow > 208 && GameFlow < 229){
g.fillRect(11, 11, 500, 260 - (GameFlow - 209)*15);
g.fillRect(11, 261 + (GameFlow - 209)*15, 500, 260 - (GameFlow - 209)*15);
}
Font titleFont = new Font("Century Gothic", Font.BOLD, 19);
g.setFont(titleFont);
g.setColor(Color.blue);
if(GameFlow >= 20 && GameFlow <= 208)
g.drawString("Stage Clear", 200, 250);
}
Font titleFont = new Font("Century Gothic", Font.BOLD, 16);
g.setFont(titleFont);
g.setColor(new Color(81, 94, 255));
g.drawString("x", 550, 468);
g.drawString(life + "", 565, 469);
String SCORE = Score + "";
g.drawString("Scores:" + "", 515, 420);
g.drawString(SCORE.substring(SCORE.length() - 6, SCORE.length()) + "", 525, 438);
g.setColor(new Color(224, 97, 199));
g.drawString("Enemy = " + (20 - Enemyindex), 515, 50);
if(gameover){
titleFont = new Font("Century Gothic", Font.BOLD, 24);
g.setFont(titleFont);
g.setColor(new Color(81, 94, 225));
g.drawString("G A M E", 212, 220);
g.drawString("O V E R", 212, 250);
}
}
//====================================== KeyEvent==============================================
// when a key is pressed.....
public void keyPressed(KeyEvent e){
if(!gameover && !drawVictoryPics){
if(e.getKeyCode() == KeyEvent.VK_UP){
if(tank.getDirection() != 0)
tank.ChangeFace(0);
UP_TYPED = true;
}
if(e.getKeyCode() == KeyEvent.VK_LEFT){
if(tank.getDirection() != 2)
tank.ChangeFace(2);
LEFT_TYPED = true;
}
if(e.getKeyCode() == KeyEvent.VK_DOWN ){
if(tank.getDirection() != 1)
tank.ChangeFace(1);
DOWN_TYPED = true;
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT ){
if(tank.getDirection() != 3)
tank.ChangeFace(3);
RIGHT_TYPED = true;
}
if((fire_TYPED || e.getKeyChar() == 's') && tankBullet[indexOftankBullet - tankbulletNumber] == null && tankbulletinterval <= 0){
tankBullet[indexOftankBullet] = new bullet(tank.getxPos(), tank.getyPos(), tank.getDirection(),tankbulletspeed, bulletpower);
indexOftankBullet++;
fire_TYPED = true;
tankbulletinterval = TBI;
}
}
}
// when this key is the released.....
public void keyReleased(KeyEvent e){
if(e.getKeyCode() == KeyEvent.VK_UP && UP_TYPED){
UP_TYPED = false;
}
if(e.getKeyCode() == KeyEvent.VK_DOWN && DOWN_TYPED){
DOWN_TYPED = false;
}
if(e.getKeyCode() == KeyEvent.VK_RIGHT && RIGHT_TYPED){
RIGHT_TYPED = false;
}
if(e.getKeyCode() == KeyEvent.VK_LEFT && LEFT_TYPED){
LEFT_TYPED = false;
}
if(e.getKeyChar() == 's' && fire_TYPED){
fire_TYPED = false;
}
}
public void keyTyped(KeyEvent e){}
//======================================== others ============================================
public void update(Graphics g) {
Graphics offScreenGraphics;
if (offScreenImage == null) {
offScreenImage = createImage(610, 520);
}
offScreenGraphics = offScreenImage.getGraphics();
offScreenGraphics.setColor(Color.white);
offScreenGraphics.fillRect(0, 0, 610, 520);
paint(offScreenGraphics);
g.drawImage(offScreenImage, 0, 0, this);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -