?? tankclient.java
字號:
package tank;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings("serial")
public class TankClient extends Frame{
private static final int GAME_WIDTH = 800;
private static final int GAME_HEIGHT = 600;
private Director dir;
private Tank t;
private Wall w1,w2;
private Food fd;
Image offScreenImage=null;
Dimension dimen=Toolkit.getDefaultToolkit().getScreenSize();
int x,y;
List <Explod> explodList =new ArrayList<Explod>();
List <Missile> missileList=new ArrayList<Missile>();
List<Enemy> enemyList=new ArrayList<Enemy>();
int [] enmeyLocation=new int[]{50,100,150,200,250,300,350,400,450,500,550,600,650,700};
public void lunchFrame(){
x=(int)dimen.getWidth();
y=(int)dimen.getHeight();
dir=Director.STOP;
t=new Tank(200,200,dir,this);
w1=new Wall(100,150,30,300);
w2=new Wall(200,100,500,30);
fd=new Food(20,20);
for (int i=0;i<enmeyLocation.length;i++){
enemyList.add(new Enemy(enmeyLocation[i],50,dir,this));
}
this.setSize(GAME_WIDTH,GAME_HEIGHT);
this.setLocation((x-GAME_WIDTH)/2, (y-GAME_HEIGHT)/2);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(final WindowEvent e) {
System.exit(0);
}
});
this.addKeyListener(new MyKeyAction());
this.setBackground(Color.blue);
this.setVisible(true);
new Thread(new PaintThread()).start();
}
public Food getFd() {
return fd;
}
public void update(Graphics g) {
if(offScreenImage==null){
offScreenImage=this.createImage(GAME_WIDTH, GAME_HEIGHT);
}
Graphics offScreen=offScreenImage.getGraphics();
paint(offScreen);
g.drawImage(offScreenImage, 0, 0, GAME_WIDTH, GAME_HEIGHT, null);
}
public void paint(Graphics g) {
if(enemyList.size()==0){
for (int i=0;i<enmeyLocation.length;i++){
enemyList.add(new Enemy(enmeyLocation[i],50,dir,this));
fd.setLive(true);
}
}
Color c=g.getColor();
g.setColor(Color.BLUE);
g.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
g.setColor(Color.red);
g.drawString("missilecount:"+String.valueOf(missileList.size()),30,60);
g.drawString("Enemycount:"+String.valueOf(enemyList.size()),30,90);
g.drawString("explodcount:"+String.valueOf(explodList.size()),30,120);
w1.draw(g);
w2.draw(g);
t.paint(g);
fd.draw(g);
t.isBeHit(missileList);
for(int i=0;i<enemyList.size();i++){
Enemy en=enemyList.get(i);
if(en.isBeHit(missileList)){
this.explodList.add(new Explod(en.getX(),en.getY(),this));
}
en.paint(g);
}
for(int i=0;i<missileList.size();i++){
Missile ms=missileList.get(i);
ms.draw(g);
}
for(int i=0;i<explodList.size();i++){
Explod ex=explodList.get(i);
ex.draw(g);
}
g.setColor(c);
}
public static int getGAME_WIDTH() {
return GAME_WIDTH;
}
public Tank getT() {
return t;
}
public static int getGAME_HEIGHT() {
return GAME_HEIGHT;
}
public Wall getW1() {
return w1;
}
public Wall getW2() {
return w2;
}
private class MyKeyAction extends KeyAdapter{
public void keyPressed(KeyEvent e) {
t.keyPressed(e);
}
public void keyReleased(KeyEvent e) {
t.keyReleased(e);
}
}
private class PaintThread implements Runnable{
public void run() {
while(true){
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args){
TankClient tc=new TankClient();
tc.lunchFrame();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -