parent
57e9bd49a1
commit
ba22a013c2
Binary file not shown.
@ -0,0 +1,16 @@
|
||||
package com.demo.tank.course8;
|
||||
|
||||
public class BulletTankCollider implements Collider{
|
||||
@Override
|
||||
public void collide(GameObject g1, GameObject g2) {
|
||||
if(g1 instanceof Bullet && g2 instanceof Tank){
|
||||
Bullet b = (Bullet) g1;
|
||||
Tank t = (Tank) g2;
|
||||
b.collideWith(t);
|
||||
}else if(g1 instanceof Tank && g2 instanceof Bullet){
|
||||
collide(g2, g1);
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.demo.tank.course8;
|
||||
|
||||
public interface Collider {
|
||||
void collide(GameObject g1, GameObject g2);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.demo.tank.course8;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class ColliderChain {
|
||||
private List<Collider> colliders = new LinkedList<>();
|
||||
|
||||
public ColliderChain(){
|
||||
add(new BulletTankCollider());
|
||||
add(new TankTankCollider());
|
||||
}
|
||||
|
||||
public void add(Collider collider){
|
||||
colliders.add(collider);
|
||||
}
|
||||
|
||||
public void collide(GameObject g1, GameObject g2) {
|
||||
for (Collider c : colliders){
|
||||
c.collide(g1, g2);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.demo.tank.course8;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
public abstract class GameObject {
|
||||
int x, y;
|
||||
public abstract void paint(Graphics g);
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.demo.tank.course8;
|
||||
|
||||
import com.demo.tank.enums.Direction;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class TankTankCollider implements Collider{
|
||||
Random random = new Random();
|
||||
@Override
|
||||
public void collide(GameObject g1, GameObject g2) {
|
||||
if(g1 instanceof Tank && g2 instanceof Tank){
|
||||
Tank t1 = (Tank) g1;
|
||||
Tank t2 = (Tank) g2;
|
||||
if(t1.rect.intersects(t2.rect)){
|
||||
// simple deal
|
||||
t1.setDir(Direction.values()[random.nextInt(4)]);
|
||||
t2.setDir(Direction.values()[random.nextInt(4)]);
|
||||
}
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue