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

📄 tankclient.java

📁 坦克大战的初级模型1.0 坦克大战的初级模型1.0
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;

public class TankClient extends Frame {
	public static final int GAME_WIDTH = 800;
	public static final int GAME_HEIGHT = 600;	//将经常可能改动的地方定义成常量,有利于程序的维护和扩展
	public static final int TIME = 20;
	
	Image offScreenImage = null;		//声明一个虚拟图像,将重画的坦克显示在这里,然后一次向显示在显示器上
	
	Tank myTank = new Tank(50,50);
	Missile m = new Missile(50,50,Tank.Direction.R);
	public static void main(String[] args) {
		new TankClient().launcherame();
	}
	
	public void paint(Graphics g) {		//paint方法在repaint中会自动被调用	
		m.draw(g);
		myTank.draw(g);
	}
	
	 public void Update(Graphics g) {	//repaint方法会首先调用Update方法,然后Update方法会在调用paint方法,所以是在此处声明Update方法,截住调用paint方法。
		 if(offScreenImage == null) {
			 offScreenImage = this.createImage(GAME_WIDTH,GAME_HEIGHT);	//创建虚拟的图片
			 Graphics goffScreen = offScreenImage.getGraphics();	//拿到画笔goffScreen
			 Color c = goffScreen.getColor();	//得到背景色
			 goffScreen.drawRect(0, 0, GAME_WIDTH, GAME_HEIGHT);//重画窗口,相当于刷新
			 goffScreen.setColor(Color.darkGray);//重设窗口背景色。以上三句相当于刷屏,一位每次画一个坦克出来,必须刷掉才能画新的坦克,否则所有的坦克都会显示出来,形成一条线。
			 paint(goffScreen);//调用paint方法,将画笔goffScreen传进去,画出坦克
			 g.drawImage(offScreenImage, 0, 0, null);//画出虚拟的图片
		 }
	 }
	
	public void launcherame() {
		this.setLocation(112,84);
		setSize(GAME_WIDTH,GAME_HEIGHT);
		setTitle("坦克大战");
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent arg0) {
				System.exit(0);
			}
		});
		this.setResizable(false);
		this.setBackground(Color.darkGray);
		this.addKeyListener(new KeyMonitor());	//将键盘监听加入frame中来
		this.setVisible(true);
		new Thread(new PaintThread()).start();
	}
	
	private class PaintThread implements Runnable {
		public void run() {
			try {
				while(true) {
					repaint();
					Thread.sleep(TIME);
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	private class KeyMonitor extends KeyAdapter {		//实现键盘监听事件。不实现接口而实现继承,因为实现接口要将不需要的方法也的实现
		
		public void keyReleased(KeyEvent e) {
			myTank.keyReleased(e);
		} 
		
		public void keyPressed(KeyEvent e) {
			myTank.keyPressed(e);
		} 
	}
}

⌨️ 快捷键说明

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