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

📄 combattank34.java

📁 简易的坦克程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
							}
							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;
			}*/
			if(e.getKeyChar() == KeyEvent.VK_DOWN){
				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 + -