java项目之——坦克大战08

功能:然坦克向八个方向行走。(以前只有四个方向)。

内容:添加代表方向的量(枚举)

            添加记录按键状态的布尔量

            根据按键状态确定坦克方向

            根据方向进行下一步的移动(move方法)

以下修改的全为tank类中的代码:

1.为了方便改变移动速度:常量

public static final int XSPEED =5;
public static final int YSPEED =5;

2.添加记录按键状态的布尔量

private boolean bL=false,bU=false,bD=false,bR=false;

3.注意有sotp

enum Direction {L,LU,U,RU,R,RD,D,LD,STOP};
private Direction dir = Direction.STOP;

4.按键监听方法(添加记录按键状态的布尔量)

public void keyPressed(KeyEvent e) {
		int key = e.getKeyCode();
		switch(key){
		case KeyEvent.VK_LEFT:  bL=true;  break;
		case KeyEvent.VK_UP:    bU=true;  break;
		case KeyEvent.VK_RIGHT: bR=true;  break;
		case KeyEvent.VK_DOWN:  bD=true;  break;
		}
	}

5.在 keyPressed 方法中调用  locateDirection()

void locateDirection(){
		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.U;
		else if(!bL && bU && bR && !bD)dir=Direction.RU;
		else if(!bL && !bU && bR && !bD)dir=Direction.R;
		else if(!bL && !bU && bR && bD)dir=Direction.RD;
		else if(!bL && !bU && !bR && bD)dir=Direction.D;
		else if(bL && !bU && !bR && bD)dir=Direction.LD;
		else if(!bL && !bU && !bR && !bD)dir=Direction.STOP;		
	}	


6.在draw方法里面调用move()

 void move(){
	   switch(dir){
	   case L: x -= XSPEED;break;
	   case LU: x -= XSPEED; y -= XSPEED;break;
	   case U: y -= XSPEED;break;
	   case RU: x += XSPEED;y -= XSPEED;break;
	   case R: x += XSPEED;break;
	   case RD: x += XSPEED;y += XSPEED;break;
	   case D: y += XSPEED;break;
	   case LD: x -= XSPEED;y += XSPEED;break;
	   }	   
   }
总结:控制8个方向的移动,枚举出8个量来代表,然后keypress方法监听四个方向的变化(设置布尔变量),locateDirection方法来判断移动方向,传递给move(),通过判断方向来控制移动,传给draw方

法,在界面画出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值