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

📄 tankclient.java

📁 坦克大战代码
💻 JAVA
字号:
package com.caizi;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class TankClient extends Frame {

	static int WINDOW_WIDTH = 500;
	static int WINDOW_HEIGHT = 500;
	Tank tank = new Tank(190, 240, true, false, this);
	Tank enemyTank = null;
	Life life = new Life(this);
	Wall wall = new Wall(150, 200, 120, 10, this);
	List<Tank> enemyTanks = new ArrayList();
	List<Explode> explodes = new ArrayList();
	List<Missile> missiles = new ArrayList();
	Image image = null;

	public void lanchFrame(int tankNumber) {
		Properties proper = new Properties();
		try {
			proper.load(this.getClass().getClassLoader().getResourceAsStream("config/tank.properties"));
		} catch (IOException e1) {			
			e1.printStackTrace();
		}
		int initTankCount = Integer.parseInt(proper.getProperty("initTankCount"));
		for (int i = 0; i < initTankCount; i++) {
			enemyTank = new Tank(i * 50, 60, false, this);
			enemyTanks.add(enemyTank);
		}
		setBounds(100, 100, WINDOW_WIDTH, WINDOW_HEIGHT);
		setTitle("坦克大战");
		this.setBackground(Color.DARK_GRAY);
		addKeyListener(new KeyMonitor());
		new Thread(new TankMove()).start();
		setResizable(false);
		setVisible(true);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	@Override
	public void update(Graphics g) {
		if (image == null) {
			image = this.createImage(WINDOW_WIDTH, WINDOW_HEIGHT);
		}
		Graphics gImage = image.getGraphics();
		Color c = gImage.getColor();
		gImage.setColor(Color.DARK_GRAY);
		gImage.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
		gImage.setColor(c);
		paint(gImage);
		g.drawImage(image, 0, 0, null);
	}

	@Override
	public void paint(Graphics g) {
//		if(Math.random() > 0.9){
//			
//		}
		for (int i = 0; i < enemyTanks.size(); i++) {
			enemyTank = enemyTanks.get(i);
			if (enemyTank.isLive()) {
				enemyTank.hitWall(wall);
				enemyTank.hitTank(tank);
				enemyTank.hitTank(enemyTanks);
				enemyTank.draw(g);
			} else
				enemyTanks.remove(enemyTank);
		}
		for (int i = 0; i < missiles.size(); i++) {
			Missile m = missiles.get(i);
			m.hitTanks(enemyTanks);
			m.hitTank(tank);
			m.hitWall(wall);
			if (m.isLive())
				m.draw(g);
			else
				missiles.remove(m);
		}
		for (int i = 0; i < explodes.size(); i++) {
			Explode explode = explodes.get(i);
			if (explode.isLive()) {
				explode.draw(g);
			} else
				explodes.remove(explode);
		}
		if (tank.isLive()){
			tank.hitWall(wall);
			tank.eatLife(life);
			tank.draw(g);
		}			
		wall.draw(g);
		if(life.isLive())
			life.draw(g);
	}

	public static void main(String[] args) {
		TankClient tankClient = new TankClient();
		tankClient.lanchFrame(5);
	}

	private class TankMove implements Runnable {

		@Override
		public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(80);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	private class KeyMonitor extends KeyAdapter {

		@Override
		public void keyReleased(KeyEvent e) {
			tank.keyRelease(e);
		}

		@Override
		public void keyPressed(KeyEvent e) {
			tank.keyPress(e);
		}

	}

	public static int getWINDOW_WIDTH() {
		return WINDOW_WIDTH;
	}

	public static int getWINDOW_HEIGHT() {
		return WINDOW_HEIGHT;
	}	
}

⌨️ 快捷键说明

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