用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

请选择技术分类

 *如果你找不到更细的分类,可以选择上级分类
当前位置:云代码 - 技术问答 - Java

琦琦琦琦琦琦琦琦琦琦琦琦琦琦琦琦群群群群群群群群群群群群群群

 悬赏:10|提问者:2305166493|浏览:2366
举报|2019-12-12
QQ轻轻群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群

我来回答

所有回答
举报|(3)|(3)2019-12-16
???
举报|(3)|(3)2019-12-28

举报|(3)|(3)2019-12-29
hhhhhhhh
举报|(3)|(3)2020-01-03
是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的是的
举报|(3)|(3)2020-01-03
6666666666666666666666666666
举报|(3)|(3)2020-01-06
package tankwar;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

import tankwar.Tank.Direction;
import barrier.EnemyBorn;
import barrier.Gold;
import barrier.Home;
import barrier.Iron;
import barrier.SelfBorn;
import barrier.Wall;

public class TankWar implements KeyListener {
	static boolean TIMEOUT = false;
	private JFrame f;
	private JPanel gamePanel;
	private PanelShow messgePanel;
	private myPanel p;
	private Tank myTank;
	public static final int AREA_WIDTH = 830;
	public static final int AREA_HEIGHT = 800;
	private ArrayList<Missle> missles = new ArrayList<Missle>();
	private ArrayList<Tank> allTanks = new ArrayList<Tank>();
	private ArrayList<Boom> booms = new ArrayList<Boom>();
	private ArrayList<Wall> walls = new ArrayList<Wall>();
	private ArrayList<Iron> irons = new ArrayList<Iron>();
	private ArrayList<Gold> golds = new ArrayList<Gold>();
	private ArrayList<Item> items = new ArrayList<Item>();
	private ArrayList<EnemyBorn> enemyBorns = new ArrayList<EnemyBorn>();
	private SelfBorn selfBorn;
	private Home home;
	private Tank enemyTank;
	private Random r;
	private ImageIcon backGround;
	private final String map;
	private int tankMax;
	private boolean over = false;
	private static int selfMax = 3;
	private boolean win;
	private boolean flash = false;
	private TankWar tw = this;
	static int SCORE = 0;

	private final JFrame mainF;
	private int style;

	public TankWar(String map, int tankMax, JFrame mainF, int style)
			throws Exception {
		this.map = map;
		this.tankMax = tankMax;
		this.mainF = mainF;
		this.style = style;
		init();
	}

	private void init() {
		f = new JFrame("坦克大战 V3.0");
		gamePanel = new JPanel(null);
		p = new myPanel();
		p.setBackground(Color.WHITE);
		r = new Random();
		messgePanel = new PanelShow();
		initMap(new File("map/" + map));

		try {
			myTank = new Tank(selfBorn.getX(), selfBorn.getY(), true, allTanks,
					walls, irons, golds, missles, home, booms, style);
		} catch (Exception e1) {
		}
		myTank.setDir(Direction.U);

		allTanks.add(myTank);
		addTank();
		try {
			backGround = new ImageIcon(
					TankWar.class.getResource("/pic/whiteback.jpg"));
		} catch (Exception e) {
		}

		p.setBorder(BorderFactory.createEtchedBorder(Color.BLACK, Color.WHITE));
		p.setSize(AREA_WIDTH, AREA_HEIGHT);
		messgePanel.setBounds(AREA_WIDTH, 0, 200, AREA_HEIGHT);
		gamePanel.add(messgePanel);
		gamePanel.add(p);
		f.add(gamePanel);
		f.setBounds(0, 0, AREA_WIDTH + 200, AREA_HEIGHT);
		f.setDefaultCloseOperation(3);
		f.setResizable(true);
		f.setFocusable(true);
		f.addKeyListener(this);
		f.setVisible(true);

		new Thread(new Runnable() {
			public void run() {
				while (!over) {
					if (!myTank.isLive()) {
						selfMax--;
						if (selfMax < 0) {
							f.removeKeyListener(tw);
							over = true;
							win = false;
							break;
						} else {
							myTank.setLevel(1);
							myTank.setX(selfBorn.getX());
							myTank.setY(selfBorn.getY());
							myTank.setDir(Direction.U);
							myTank.setHp(50);
							myTank.setLive(true);
						}
					}
					if (tankMax <= 0 && allTanks.size() == 1) {
						f.removeKeyListener(tw);
						over = true;
						win = true;
					}
					if (!home.isLive()) {
						f.removeKeyListener(tw);
						over = true;
						win = false;
					}
					p.repaint();
					myTank.move();
					for (int i = 1; i < allTanks.size(); i++) {
						allTanks.get(i).move();
						allTanks.get(i).setNoFire(myTank.getNoFire() + 1);
						// if(allTanks.get(i).getX()%5==0&&allTanks.get(i).getY()%5==0)
						aI(allTanks.get(i));
					}
					if (allTanks.size() <= enemyBorns.size() + 1)
						addTank();
					myTank.setNoFire(myTank.getNoFire() + 1);
					messgePanel.setEnemyCount(tankMax);
					messgePanel.setSelfCount(selfMax);
					messgePanel.setScore(SCORE);
					if (SCORE % 500 == 0) {
						SCORE += 100;
						Item item = new Item(allTanks, booms, irons, home);
						items.add(item);
						item.start();
					}
					try {
						Thread.sleep(30);
					} catch (InterruptedException e) {
					}
				}

				over();
			}

		}).start();

	}

	private class myPanel extends JPanel {
		/**
		 * 
		 */
		private static final long serialVersionUID = 4408440723797225328L;

		@Override
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(backGround.getImage(), 0, 0, null);
			for (int j = 0; j < walls.size(); j++) {
				walls.get(j).draw(g);
			}
			for (int j = 0; j < irons.size(); j++) {
				irons.get(j).draw(g);
			}
			for (int j = 0; j < golds.size(); j++) {
				golds.get(j).draw(g);
			}
			for (int j = 0; j < enemyBorns.size(); j++) {
				enemyBorns.get(j).draw(g);
			}
			home.draw(g);
			selfBorn.draw(g);

			for (int j = 0; j < allTanks.size(); j++) {
				allTanks.get(j).drawTank(g);
			}
			for (int j = 0; j < irons.size(); j++) {
				irons.get(j).draw(g);
			}

			for (int i = 0; i < missles.size(); i++) {
				missles.get(i).drawMissle(g);
				if (!missles.get(i).isLive())
					missles.remove(i);
			}
			for (int i = 0; i < booms.size(); i++) {
				if (booms.get(i).isLive())
					booms.get(i).drawBoom(g);
				else
					booms.remove(i);
			}
			for (int j = 0; j < items.size(); j++) {
				if (!items.get(j).isLive()) {
					items.remove(j);
					continue;
				}
				items.get(j).draw(g);
			}
			if (over)
				drawOver(g);
			messgePanel.repaint();
		}
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void keyPressed(KeyEvent e) {
		if (over) {
			if (e.getKeyCode() == KeyEvent.VK_F1) {
				over = false;
				missles.clear();
				allTanks.clear();
				booms.clear();
				walls.clear();
				irons.clear();
				golds.clear();
				enemyBorns.clear();
				try {
					init();
				} catch (Exception e1) {
				}
			} else {
				f.setVisible(false);
				mainF.setSize(800, 800);
				mainF.setVisible(true);
			}
		} else if (e.getKeyCode() == KeyEvent.VK_SPACE) {
			myTank.fire();
		} else {
			myTank.keyPress(e);
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {

		myTank.keyReleased(e);
	}

	public void aI(Tank tank) {
		if (TIMEOUT) {
			tank.setUp(false);
			tank.setLeft(false);
			tank.setDown(false);
			tank.setRight(false);
			return;
		}

		if (r.nextInt(40) == 0)
			tank.fire();
		if (r.nextInt(10) == 0) {
			if (tank.getX() >= myTank.getX()
					&& tank.getX() <= myTank.getX() + Tank.SIZE
					&& tank.getY() > myTank.getY()) {
				tank.setUp(true);
				tank.setLeft(false);
				tank.setDown(false);
				tank.setRight(false);
				tank.setDir(Direction.U);
				return;
			} else if (tank.getX() >= myTank.getX()
					&& tank.getX() <= myTank.getX() + Tank.SIZE
					&& tank.getY() < myTank.getY()) {
				tank.setUp(false);
				tank.setLeft(false);
				tank.setDown(true);
				tank.setRight(false);
				tank.setDir(Direction.D);
				return;
			}

			else if (tank.getX() > myTank.getX()
					&& tank.getY() >= myTank.getY()
					&& tank.getY() <= myTank.getY() + Tank.SIZE) {
				tank.setUp(false);
				tank.setLeft(true);
				tank.setDown(false);
				tank.setRight(false);
				tank.setDir(Direction.L);
				return;
			} else if (tank.getX() < myTank.getX()
					&& tank.getY() >= myTank.getY()
					&& tank.getY() <= myTank.getY() + Tank.SIZE) {
				tank.setUp(false);
				tank.setLeft(false);
				tank.setDown(false);
				tank.setRight(true);
				tank.setDir(Direction.R);
				return;
			}
		}
		if (tank.getX() <= 0) {
			tank.setUp(false);
			tank.setLeft(false);
			tank.setDown(false);
			tank.setRight(true);
			tank.setDir(Direction.R);
		}
		if (tank.getY() <= 0) {
			tank.setUp(false);
			tank.setLeft(false);
			tank.setDown(true);
			tank.setRight(false);
			tank.setDir(Direction.D);
		}
		if (tank.getX() >= AREA_WIDTH - Tank.SIZE) {
			tank.setUp(false);
			tank.setLeft(true);
			tank.setDown(false);
			tank.setRight(false);
			tank.setDir(Direction.L);
		}
		if (tank.getY() >= AREA_HEIGHT - Tank.SIZE) {
			tank.setUp(true);
			tank.setLeft(false);
			tank.setDown(false);
			tank.setRight(false);
			tank.setDir(Direction.U);
		} else if (r.nextInt(300) == 1) {
			tank.setUp(true);
			tank.setLeft(false);
			tank.setDown(false);
			tank.setRight(false);
			tank.setDir(Direction.U);
		}

		else if (r.nextInt(300) == 2) {
			tank.setUp(false);
			tank.setLeft(true);
			tank.setDown(false);
			tank.setRight(false);
			tank.setDir(Direction.L);
		} else if (r.nextInt(300) == 3) {
			tank.setUp(false);
			tank.setLeft(false);
			tank.setDown(true);
			tank.setRight(false);
			tank.setDir(Direction.D);
		} else if (r.nextInt(300) == 4) {
			tank.setUp(false);
			tank.setLeft(false);
			tank.setDown(false);
			tank.setRight(true);
			tank.setDir(Direction.R);
		}
	}

	public void initMap(File file) {
		try {
			FileInputStream read = new FileInputStream(file);
			for (int i = 0; i < AREA_HEIGHT / 50; i++) {
				for (int j = 0; j < AREA_WIDTH / 50; j++) {
					switch (read.read()) {
					case 1:
						walls.add(new Wall(j * 50, i * 50));
						break;
					case 2:
						irons.add(new Iron(j * 50, i * 50));
						break;
					case 3:
						golds.add(new Gold(j * 50, i * 50));
						break;
					case 4:
						selfBorn = new SelfBorn(j * 50, i * 50);
						break;
					case 5:
						enemyBorns.add(new EnemyBorn(j * 50, i * 50));
						break;
					case 6:
						home = new Home(j * 50, i * 50);
						break;
					}
				}
			}
			read.close();
		} catch (Exception e) {
		}
		;
	}

	public void addTank() {
		if (tankMax <= 0)
			return;
		for (int i = allTanks.size(); i < enemyBorns.size() + 1; i++) {
			try {
				int temp = r.nextInt(enemyBorns.size());
				enemyTank = new Tank(enemyBorns.get(temp).getX(), enemyBorns
						.get(temp).getY(), false, allTanks, walls, irons,
						golds, missles, home, booms, r.nextInt(3) + 1);
			} catch (Exception e) {
				e.printStackTrace();
			}
			enemyTank.setDir(Direction.D);
			enemyTank.setDown(true);
			allTanks.add(enemyTank);
			tankMax--;
			if (tankMax <= 0)
				return;
		}
	}

	public static void addMyTankLives() {
		selfMax++;
	}

	private void over() {

		for (int i = 0; i < AREA_HEIGHT / 50; i++) {
			for (int j = 0; j < AREA_WIDTH / 50; j++) {
				irons.add(new Iron(j * 50, i * 50));
				p.repaint();
				try {
					Thread.sleep(5);
				} catch (InterruptedException e) {
				}
			}
		}
		while (true) {
			flash = !flash;
			p.repaint();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
			}
			f.addKeyListener(this);
		}
	}

	private void drawOver(Graphics g) {
		p.repaint();
		g.setColor(Color.red);
		g.setFont(new Font("Arial", 1, 100));
		g.drawString("GAME OVER", 100, 200);
		g.setFont(new Font("Arial", 2, 50));
		if (win)
			g.drawString("Congratulation!  You Win!", 100, 400);
		else
			g.drawString("So Sorry,  You Lose!", 100, 400);
		if (flash) {
			g.setFont(new Font("Arial", 2, 30));
			g.setColor(Color.BLACK);
			g.drawString("Press F1 to try again...,", 150, 500);
			g.drawString("Press the other Key to Return the Title...,", 150,
					600);
		}
	}
}
举报|(2)|(2)2020-01-19
什么意思????
举报|(2)|(2)2020-02-23
???mei you ming bai
举报|(2)|(2)2020-02-25
什么东西
举报|(2)|(2)2020-03-12
nhggggggg
举报|(2)|(2)2020-03-23
二合一
举报|(1)|(1)2020-04-12
a'a'a'a'a
举报|(1)|(1)2020-06-07
df
举报|(1)|(1)2020-06-17
?????????
举报|(1)|(1)2020-08-28
混积分
举报|(1)|(1)2020-09-17
我我我
举报|(1)|(1)2020-10-13
轻轻群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群群
举报|(1)|(1)2021-01-14
不懂
举报|(1)|(1)2021-01-23
Mj
举报|(1)|(1)2021-03-15
awdawda
举报|(1)|(1)2021-05-26
d
举报|(1)|(1)2021-08-11
举报|(1)|(1)2021-08-12

qqq

举报|(1)|(1)2021-11-06
1
举报|(1)|(1)2022-09-27
GFSBHRDGVSERGV
#26FN
举报|(1)|(1)2022-09-29
h6 54h645 hb546vht5ev5gtret5h64bb5  h45hj7h54h647j6h 
举报|(1)|(1)2022-11-27
轻轻群是什么呢

相关提问