Java小游戏,防止物体跑出四周边界的算法

Java小游戏,防止物体跑出四周边界的算法

因为本人是JAVA初学者,所以下面说的这个算法会比较简单,也可能其他地方早就存在。但是,这是我自己想出来的,所以还是觉得发个文章做个纪念,嘻嘻。
算法本身很简单,其他地方就不过多叙述,直接从添加键盘监听开始。

public class QiZi extends GameObject{
	boolean left, right, up, down;
//添加键盘监听,增加和去掉方向控制
	public void addDirection(KeyEvent e) {
		switch(e.getKeyCode()) {
		case KeyEvent.VK_LEFT:
			left = true;
			break;
		case KeyEvent.VK_RIGHT:
			right = true;
			break;
		case KeyEvent.VK_UP:
			up = true;
			break;
		case KeyEvent.VK_DOWN:
			down = true;
			break;
		default:
			break;
		}
	}
	
	public void minusDirection(KeyEvent e) {
		switch(e.getKeyCode()) {
		case KeyEvent.VK_LEFT:
			left = false;
			break;
		case KeyEvent.VK_RIGHT:
			right = false;
			break;
		case KeyEvent.VK_UP:
			up = false;
			break;
		case KeyEvent.VK_DOWN:
			down = false;
			break;
		default:
			break;
		}
	}
	
	//这个就是防止和边界碰撞的代码,原理很简单
	//多看两遍就能看懂,speed是按一次方向键,x或y变换的次数
	public void draw(Graphics g) {
		super.drawMyself(g);
		if(x>10 && x<1680 && y>20 && y<870) {
			if(left) {
				x -=speed;
			}
			if(up) {
				y -=speed;
			}
			if(right) {
				x +=speed;
			}
			if(down) {
				y +=speed;
			}
		}
	else if(x<=10 && y>20 && y<870) {
		if(up) {
			y -=speed;
		}
		if(right) {
			x +=speed;
		}
		if(down) {
			y +=speed;
		}
	}
	else if(x>=1680 && y>20 && y<870) {
		if(left) {
			x -=speed;
		}
		if(up) {
			y -=speed;
		}
		if(down) {
			y +=speed;
		}
	}
	else if(x>10 && x<1680 && y>=870) {
		if(left) {
			x -=speed;
		}
		if(right) {
			x +=speed;
		}
		if(up) {
			y -=speed;
		}
	}
	else if(x>10 && x<1680 && y<=20) {
		if(left) {
			x -=speed;
		}
		if(right) {
			x +=speed;
		}
		if(down) {
			y +=speed;
		}
	}
	else if(x<=10 && y>=870) {
		if(right) {
			x +=speed;
		}
		if(up) {
			y -=speed;
		}
	}
	else if(x>=1680 && y>=870) {
		if(up) {
			y -=speed;
		}
		if(left) {
			x -=speed;
		}
	}
	else if(x>=1680 && y<=20) {
		if(down) {
			y +=speed;
		}
		if(left) {
			x -=speed;
		}
	}
	else if(x<=10 && y<=20) {
		if(down) {
			y +=speed;
		}
		if(right) {
			x +=speed;
		}
	}else {
	}
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值