Implement job experience #7
@@ -1,11 +1,12 @@
|
|||||||
package Job;
|
package Job;
|
||||||
|
|
||||||
import Action.Actor;
|
import Shared.HasExperience;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public abstract class Job {
|
public abstract class Job implements HasExperience {
|
||||||
protected int level;
|
protected int level;
|
||||||
|
protected int experience;
|
||||||
protected String name;
|
protected String name;
|
||||||
|
|
||||||
Job(String name) {
|
Job(String name) {
|
||||||
@@ -13,7 +14,7 @@ public abstract class Job {
|
|||||||
this.level = 1;
|
this.level = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getLevel() {
|
public int getLevel() {
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,16 +3,25 @@ package Job;
|
|||||||
import Action.Actor;
|
import Action.Actor;
|
||||||
import Inventory.HasInventory;
|
import Inventory.HasInventory;
|
||||||
|
|
||||||
|
|
||||||
public class Miner extends Job {
|
public class Miner extends Job {
|
||||||
public Miner() {
|
public Miner() {
|
||||||
super("Miner");
|
super("Miner");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void dig(Actor actor) {
|
public void dig(Actor actor) {
|
||||||
if(actor instanceof HasInventory a) {
|
if (actor instanceof HasInventory a) {
|
||||||
a.getInventory().add("Stone");
|
a.getInventory().add("Stone");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getExperience() {
|
||||||
|
return experience;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void gainExperience(int exp) {
|
||||||
|
experience += exp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
src/main/java/Shared/HasExperience.java
Normal file
11
src/main/java/Shared/HasExperience.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package Shared;
|
||||||
|
|
||||||
|
public interface HasExperience {
|
||||||
|
int getLevel();
|
||||||
|
|
||||||
|
int getExperience();
|
||||||
|
|
||||||
|
void gainExperience(int exp);
|
||||||
|
|
||||||
|
void levelUp();
|
||||||
|
}
|
||||||
@@ -1,21 +1,9 @@
|
|||||||
import Entity.Player;
|
|
||||||
import Job.Miner;
|
import Job.Miner;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
||||||
|
|
||||||
import Action.DigAction;
|
|
||||||
|
|
||||||
public class MinerTest {
|
public class MinerTest {
|
||||||
@Test
|
|
||||||
void miner_can_dig() {
|
|
||||||
var p = new Player("John");
|
|
||||||
var job = new Miner();
|
|
||||||
p.learnJob(job);
|
|
||||||
p.performAction(new DigAction());
|
|
||||||
assertTrue(p.getInventory().contains("Stone"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void miner_can_level_up() {
|
void miner_can_level_up() {
|
||||||
@@ -25,6 +13,13 @@ public class MinerTest {
|
|||||||
assertEquals(2, job.getLevel());
|
assertEquals(2, job.getLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void miner_can_gain_xp() {
|
||||||
|
var job = new Miner();
|
||||||
|
job.gainExperience(25);
|
||||||
|
assertEquals(25, job.getExperience());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import Action.DigAction;
|
||||||
import Entity.Position;
|
import Entity.Position;
|
||||||
import Job.Miner;
|
import Job.Miner;
|
||||||
import Entity.Player;
|
import Entity.Player;
|
||||||
@@ -33,4 +34,13 @@ class PlayerTest {
|
|||||||
p.learnJob(job);
|
p.learnJob(job);
|
||||||
assertEquals(new Miner(), p.getJob());
|
assertEquals(new Miner(), p.getJob());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void miner_can_dig() {
|
||||||
|
var p = new Player("John");
|
||||||
|
var job = new Miner();
|
||||||
|
p.learnJob(job);
|
||||||
|
p.performAction(new DigAction());
|
||||||
|
assertTrue(p.getInventory().contains("Stone"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user