📄 missile.java
字号:
package com.caizi;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Missile {
private int x,y;
private static final int X_SPEED = 8;
private static final int Y_SPEED = 8;
static final int WIDTH = 10;
static final int HIGHTH = 10;
private boolean live = true;
private boolean friend;
private Direction dir;
private TankClient tc = null;
private static Toolkit t = Toolkit.getDefaultToolkit();
private static Image[] images = {
t.getImage(Explode.class.getClassLoader().getResource("images/missileU.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileRU.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileR.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileDR.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileD.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileUL.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileL.gif")),
t.getImage(Explode.class.getClassLoader().getResource("images/missileUL.gif")),
};
private static Map<String, Image> missileMap = new HashMap<String, Image>();
static {
missileMap.put("N", images[0]);
missileMap.put("NE", images[1]);
missileMap.put("E", images[2]);
missileMap.put("SE", images[3]);
missileMap.put("S", images[4]);
missileMap.put("SW", images[5]);
missileMap.put("W", images[6]);
missileMap.put("NW", images[7]);
}
public Missile(int x, int y, Direction dir) {
super();
this.x = x;
this.y = y;
this.dir = dir;
}
public Missile(int x, int y, Direction dir,boolean friend, TankClient tc){
this(x,y,dir);
this.friend = friend;
this.tc = tc;
}
public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
public void draw(Graphics g){
switch (dir) {
case N:
g.drawImage(missileMap.get("N"), x, y, null);
break;
case NE:
g.drawImage(missileMap.get("NE"), x, y, null);
break;
case E:
g.drawImage(missileMap.get("E"), x, y, null);
break;
case SE:
g.drawImage(missileMap.get("SE"), x, y, null);
break;
case S:
g.drawImage(missileMap.get("S"), x, y, null);
break;
case SW:
g.drawImage(missileMap.get("SW"), x, y, null);
break;
case W:
g.drawImage(missileMap.get("W"), x, y, null);
break;
case NW:
g.drawImage(missileMap.get("NW"), x, y, null);
break;
}
move();
}
public void move(){
switch(dir){
case N:
y -= Y_SPEED;
break;
case NE:
x += X_SPEED;
y -= Y_SPEED;
break;
case E:
x += X_SPEED;
break;
case SE:
x += X_SPEED;
y += Y_SPEED;
break;
case S:
y += Y_SPEED;
break;
case SW:
x -= X_SPEED;
y += Y_SPEED;
break;
case W:
x -= X_SPEED;
break;
case NW:
x -=X_SPEED;
y -= Y_SPEED;
break;
}
if(x <0 || y<0 || x > TankClient.WINDOW_WIDTH|| y> TankClient.WINDOW_HEIGHT){
setLive(false);
}
}
public Rectangle getRect(){
return new Rectangle(this.x, this.y, this.WIDTH, this.HIGHTH);
}
public boolean hitTank(Tank tank){
if(this.getRect().intersects(tank.getRect()) && tank.isLive() && (tank.isFriend())!=this.friend){
tank.beHitted();
this.tc.explodes.add(new Explode(this.x,this.y,this.tc));
this.setLive(false);
return true;
}
return false;
}
public void hitTanks(List<Tank> tanks){
for(int j = 0; j < tanks.size(); j++ ){
Tank tank = tanks.get(j);
hitTank(tank);
}
}
public boolean hitWall(Wall wall){
if(this.isLive() && this.getRect().intersects(wall.getRect())){
this.live = false;
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -