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 {
}
}