我做一个游戏要控制图象运动的8个方向,其它都可以动作,就是当按下向右的键时候,向右下方运动,代码好像没有问题,期望高手帮帮记忙。void move(){
switch(dir){
case L:
x-=XSPEED;
break;
case LU:
x-=XSPEED;
y-=YSPEED;
break;
case U:
y-=YSPEED;
break;
case RU:
x+=XSPEED;
y-=YSPEED;
break;
case R:
x+=XSPEED;
case RD:
x+=XSPEED;
y+=YSPEED;
break;
case D:
y+=YSPEED;
break;
case LD:
x-=XSPEED;
y+=YSPEED;
break;
case STOP:
break;
}
}
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_UP:
bu=true;
break;
case KeyEvent.VK_DOWN:
bd=true;
break;
case KeyEvent.VK_LEFT:
bl=true;
break;
case KeyEvent.VK_RIGHT:
br=true;
break;
}
location();
}
void location(){
if(bl && !bu && !br && !bd)
dir=direction.L ;
else if(bl && bu && !br && !bd)
dir=direction.LU;
else if(bl && !bu && !br && bd)
dir=direction.LD ;
else if(!bl && bu && br && !bd)
dir=direction.RU ;
else if(!bl && !bu && br && bd)
dir=direction.RD ;
else if(!bl && bu && !br && !bd)
dir=direction.U;
else if(!bl && !bu && br && !bd)
dir=direction.R ;
else if(!bl && !bu && !br && bd)
dir=direction.D ;
else if(!bl && !bu && !br && !bd)
dir=direction.STOP;
}
public void keyReleased(KeyEvent e) {
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_UP:
bu=false;
break;
case KeyEvent.VK_DOWN:
bd=false;
break;
case KeyEvent.VK_LEFT:
bl=false;
break;
case KeyEvent.VK_RIGHT:
br=false;
break;
}
location();
} }这个就是我的代码
switch(dir){
case L:
x-=XSPEED;
break;
case LU:
x-=XSPEED;
y-=YSPEED;
break;
case U:
y-=YSPEED;
break;
case RU:
x+=XSPEED;
y-=YSPEED;
break;
case R:
x+=XSPEED;
case RD:
x+=XSPEED;
y+=YSPEED;
break;
case D:
y+=YSPEED;
break;
case LD:
x-=XSPEED;
y+=YSPEED;
break;
case STOP:
break;
}
}
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_UP:
bu=true;
break;
case KeyEvent.VK_DOWN:
bd=true;
break;
case KeyEvent.VK_LEFT:
bl=true;
break;
case KeyEvent.VK_RIGHT:
br=true;
break;
}
location();
}
void location(){
if(bl && !bu && !br && !bd)
dir=direction.L ;
else if(bl && bu && !br && !bd)
dir=direction.LU;
else if(bl && !bu && !br && bd)
dir=direction.LD ;
else if(!bl && bu && br && !bd)
dir=direction.RU ;
else if(!bl && !bu && br && bd)
dir=direction.RD ;
else if(!bl && bu && !br && !bd)
dir=direction.U;
else if(!bl && !bu && br && !bd)
dir=direction.R ;
else if(!bl && !bu && !br && bd)
dir=direction.D ;
else if(!bl && !bu && !br && !bd)
dir=direction.STOP;
}
public void keyReleased(KeyEvent e) {
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_UP:
bu=false;
break;
case KeyEvent.VK_DOWN:
bd=false;
break;
case KeyEvent.VK_LEFT:
bl=false;
break;
case KeyEvent.VK_RIGHT:
br=false;
break;
}
location();
} }这个就是我的代码
import java.awt.event.*;
public class Tank {
TankClient tc=null;
private int x,y;
private final int XSPEED=5;
private final int YSPEED=5;
private boolean bl=false,bu=false,br=false,bd=false;
enum direction{L,LU,U,RU,R,RD,D,LD,STOP};
private direction dir=direction.STOP;
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
public Tank(int x,int y,TankClient tc){
this(x,y);
this.tc=tc;
}
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 U:
y-=YSPEED;
break;
case RU:
x+=XSPEED;
y-=YSPEED;
break;
case R:
x+=XSPEED;
case RD:
x+=XSPEED;
y+=YSPEED;
break;
case D:
y+=YSPEED;
break;
case LD:
x-=XSPEED;
y+=YSPEED;
break;
case STOP:
break;
}
}
public void keyPressed(KeyEvent e){
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_UP:
bu=true;
break;
case KeyEvent.VK_DOWN:
bd=true;
break;
case KeyEvent.VK_LEFT:
bl=true;
break;
case KeyEvent.VK_RIGHT:
br=true;
break;
}
location();
}
void location(){
if(bl && !bu && !br && !bd)
dir=direction.L ;
else if(bl && bu && !br && !bd)
dir=direction.LU;
else if(bl && !bu && !br && bd)
dir=direction.LD ;
else if(!bl && bu && br && !bd)
dir=direction.RU ;
else if(!bl && !bu && br && bd)
dir=direction.RD ;
else if(!bl && bu && !br && !bd)
dir=direction.U;
else if(!bl && !bu && br && !bd)
dir=direction.R ;
else if(!bl && !bu && !br && bd)
dir=direction.D ;
else if(!bl && !bu && !br && !bd)
dir=direction.STOP;
}
public void keyReleased(KeyEvent e) {
int key=e.getKeyCode();
switch(key){
case KeyEvent.VK_CONTROL:
tc.m =fire();
break;
case KeyEvent.VK_UP:
bu=false;
break;
case KeyEvent.VK_DOWN:
bd=false;
break;
case KeyEvent.VK_LEFT:
bl=false;
break;
case KeyEvent.VK_RIGHT:
br=false;
break;
}
location();
}
public Milssile fire(){
Milssile m=new Milssile(x,y,dir);
return m;
}
}
就是这个了,谢谢帮忙。
case R:
x+=XSPEED;
case RD:
x+=XSPEED;
y+=YSPEED;
break;改成case R:
x+=XSPEED;
break;
case RD:
x+=XSPEED;
y+=YSPEED;
break;
没有break