import java.awt.Color; import java.awt.Graphics; import java.awt.event.*;public class Tank { int x,y; public static final int XSPEED=5; public static final int YSPEED=5;
enum Direction{L,LU,LD,R,RU,RD,U,D,STOP}; private Direction dir=Direction.STOP;
public Tank(int x, int y) {
this.x = x; this.y = y; } public void draw(Graphics g) { Color c=g.getColor(); g.setColor(Color.RED); g.fillOval(x, y, 30, 30); g.setColor(c); move();
} void move(){
switch(dir){ case L: x-=XSPEED; break; case LU: x-=XSPEED; y-=YSPEED; break; case LD: x-=XSPEED; y+=YSPEED; break; case U: y+=YSPEED; break; case R: x+=XSPEED; break; case RU: x+=XSPEED; y-=YSPEED; break; case RD: x+=XSPEED; y+=YSPEED; break; case D: y+=YSPEED; break; case STOP: break;
} }
public void keyPressed(KeyEvent e){ int key=e.getKeyCode(); switch(key){ case KeyEvent.VK_LEFT: bL=true; x-=5; break; case KeyEvent.VK_UP: bU=true; y-=5; break; case KeyEvent.VK_RIGHT: bR=true; x+=5; break; case KeyEvent.VK_DOWN: bD=true; y+=5; break; locateDirection(); } }
import java.awt.Graphics;
import java.awt.event.*;public class Tank {
int x,y;
public static final int XSPEED=5;
public static final int YSPEED=5;
private boolean bL=false,bR=false,bU=false,bD=false;
enum Direction{L,LU,LD,R,RU,RD,U,D,STOP};
private Direction dir=Direction.STOP;
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
public void draw(Graphics g) {
Color c=g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);
move();
}
void move(){
switch(dir){
case L:
x-=XSPEED;
break;
case LU:
x-=XSPEED;
y-=YSPEED;
break;
case LD:
x-=XSPEED;
y+=YSPEED;
break;
case U:
y+=YSPEED;
break;
case R:
x+=XSPEED;
break;
case RU:
x+=XSPEED;
y-=YSPEED;
break;
case RD:
x+=XSPEED;
y+=YSPEED;
break;
case D:
y+=YSPEED;
break;
case STOP:
break;
}
}
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_LEFT:
bL=true;
x-=5;
break;
case KeyEvent.VK_UP:
bU=true;
y-=5;
break;
case KeyEvent.VK_RIGHT:
bR=true;
x+=5;
break;
case KeyEvent.VK_DOWN:
bD=true;
y+=5;
break;
locateDirection();
}
}
void locateDirection(){
if(bL&&!bU&&! bR&&! bD)dir=Direction.L;
if(bL&&bU&&! bR&&! bD)dir=Direction.LU;
if(bL&&! bU&&! bR&&bD)dir=Direction.LD;
if(!bL&&! bU&&bR&&! bD)dir=Direction.R;
if(!bL&&bU&&bR&&! bD)dir=Direction.RU;
if(!bL&&! bU&&bR&&bD)dir=Direction.RD;
if(!bL&&bU&&! bR&&! bD)dir=Direction.U;
if(!bL&&! bU&&! bR&&bD)dir=Direction.D;
if(!bL&&! bU&&! bR&&! bD)dir=Direction.STOP;
}
}
直接定义成一个类看看public enum Direction {
L, LU, U, RU, R, RD, D, LD, STOP
}