Mob subclasses
This commit is contained in:
parent
07221a09f2
commit
927d98c977
|
@ -66,16 +66,21 @@ public class GameFrame extends JFrame implements WindowListener {
|
|||
if (mobs.isEmpty() && round < 4) {
|
||||
++round;
|
||||
for (int i = 1; i <= RANDOM.nextInt(16) + 1; ++i) {
|
||||
Mob mob = new Mob();
|
||||
Mob mob = Mob.getRandomMob();
|
||||
mob.move(RANDOM.nextInt(getMap().getWidth() / 16), RANDOM.nextInt(getMap().getHeight() / 16));
|
||||
mobs.add(mob);
|
||||
}
|
||||
}
|
||||
|
||||
for (Mob mob : mobs) {
|
||||
for (Mob mob : new ArrayList<>(mobs)) {
|
||||
mob.tick();
|
||||
if (mob.getX() < 0 || mob.isDead())
|
||||
mobs.remove(mob);
|
||||
else {
|
||||
Sprite s = mob.getSprite();
|
||||
g.drawImage(s.getImage(), SPRITE_SIZE * mob.getX(), SPRITE_SIZE * mob.getY(), SPRITE_SIZE, SPRITE_SIZE, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
|
|
@ -7,18 +7,30 @@ import java.util.Arrays;
|
|||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class Mob {
|
||||
public abstract class Mob {
|
||||
private static final Random RANDOM = new Random();
|
||||
private static final List<String> MOB_SPRITES = Arrays.asList("mob1", "mob2", "mobcancer");
|
||||
private Sprite sprite;
|
||||
private int x;
|
||||
private int y;
|
||||
private int hp;
|
||||
private long tickRemains;
|
||||
|
||||
public Mob() {
|
||||
this.sprite = SpriteRegister.getCategory(MOB_SPRITES.get(RANDOM.nextInt(3))).getSprites().get(0);
|
||||
this.hp = getMaxHP();
|
||||
this.tickRemains = getSlowness();
|
||||
}
|
||||
|
||||
public abstract int getMaxHP();
|
||||
|
||||
public abstract long getSlowness();
|
||||
|
||||
public abstract int getReward();
|
||||
|
||||
public abstract String getName();
|
||||
|
||||
public Sprite getSprite() {
|
||||
if (sprite == null)
|
||||
sprite = SpriteRegister.getCategory(getName()).getSprites().get(0);
|
||||
return sprite;
|
||||
}
|
||||
|
||||
|
@ -35,6 +47,36 @@ public class Mob {
|
|||
this.y = y;
|
||||
}
|
||||
|
||||
public int getHP() {
|
||||
return hp;
|
||||
}
|
||||
|
||||
public boolean isDead() {
|
||||
return hp <= 0;
|
||||
}
|
||||
|
||||
public void setHP(int hp) {
|
||||
this.hp = hp;
|
||||
}
|
||||
|
||||
public boolean hit() {
|
||||
if (!isDead()) {
|
||||
--this.hp;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
if (tickRemains > 0)
|
||||
--tickRemains;
|
||||
else {
|
||||
tickRemains = getSlowness();
|
||||
move(getX() - 1, getY());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Mob{" +
|
||||
|
@ -43,4 +85,15 @@ public class Mob {
|
|||
", y=" + y +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static Mob getRandomMob() {
|
||||
switch (RANDOM.nextInt(3)) {
|
||||
case 1:
|
||||
return new Mob1();
|
||||
case 2:
|
||||
return new Mob2();
|
||||
default:
|
||||
return new MobCancer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
public class Mob1 extends Mob {
|
||||
@Override
|
||||
public int getMaxHP() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getSlowness() {
|
||||
return 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getReward() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "mob1";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
public class Mob2 extends Mob {
|
||||
@Override
|
||||
public int getMaxHP() {
|
||||
return 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getSlowness() {
|
||||
return 60;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getReward() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "mob2";
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
public class MobCancer extends Mob {
|
||||
@Override
|
||||
public int getMaxHP() {
|
||||
return 50;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getSlowness() {
|
||||
return 10000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getReward() {
|
||||
return 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "mobcancer";
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue