diff --git a/.classpath b/.classpath index e0e6526e3ded89337a532dec843a201cb3b592bc..4697753aa55735bd8df62ca3b9580f4b96c48707 100644 --- a/.classpath +++ b/.classpath @@ -3,6 +3,11 @@ <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="test"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 272e3b91d2da5619281ba19d380758998935673d..c7f863b738c131ca608effecafdaa9a807dc585f 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/src/events/VillageEvent.java b/src/events/VillageEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..d6b24bf557155ff1938a0b37f0d629dc9bbb838b --- /dev/null +++ b/src/events/VillageEvent.java @@ -0,0 +1,61 @@ +package events; + +import main.Case; +import main.Joueur; +import main.Scan; +import main.Type; +import units.Paysant; +import units.Unite; + +public class VillageEvent implements Evenements{ + + private Joueur owner = null; + + public void action(Case eventCase) { + Joueur visiteur = eventCase.getUnite().getJoueur(); + Unite uniteVisiteur = eventCase.getUnite(); + if (eventCase.getType() == Type.VILLAGE) { + System.out.println("1. Ne rien faire/n2. Piller village"); + if (owner == visiteur) { + System.out.println("3. Enrôler paysan (5 Po)"); + } + switch (Scan.readString()) { + case "1": + break; + case "2": + visiteur.setBanqueJoueur(visiteur.getBanqueJoueur() + 10); + eventCase.setPillage(); + break; + case "3": + if (uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()+1).getUnite() == null && uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()+1).getType() != Type.MOUNTAIN) { + uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()+1).setUnite(new Paysant(eventCase.getX(), eventCase.getY()+1, uniteVisiteur.getPlateau(), visiteur)); + visiteur.setBanqueJoueur(visiteur.getBanqueJoueur() -5); + } + else if (uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()-1).getUnite() == null && uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()-1).getType() != Type.MOUNTAIN) { + uniteVisiteur.getPlateau().getCase(eventCase.getX(), eventCase.getY()-1).setUnite(new Paysant(eventCase.getX(), eventCase.getY()-1, uniteVisiteur.getPlateau(), visiteur)); + visiteur.setBanqueJoueur(visiteur.getBanqueJoueur() -5); + } + else if (uniteVisiteur.getPlateau().getCase(eventCase.getX()+1, eventCase.getY()).getUnite() == null && uniteVisiteur.getPlateau().getCase(eventCase.getX()+1, eventCase.getY()).getType() != Type.MOUNTAIN) { + uniteVisiteur.getPlateau().getCase(eventCase.getX()+1, eventCase.getY()).setUnite(new Paysant(eventCase.getX()+1, eventCase.getY(), uniteVisiteur.getPlateau(), visiteur)); + visiteur.setBanqueJoueur(visiteur.getBanqueJoueur() -5); + } + else if (uniteVisiteur.getPlateau().getCase(eventCase.getX()-1, eventCase.getY()).getUnite() == null && uniteVisiteur.getPlateau().getCase(eventCase.getX()-1, eventCase.getY()).getType() != Type.MOUNTAIN) { + uniteVisiteur.getPlateau().getCase(eventCase.getX()-1, eventCase.getY()).setUnite(new Paysant(eventCase.getX()-1, eventCase.getY(), uniteVisiteur.getPlateau(), visiteur)); + visiteur.setBanqueJoueur(visiteur.getBanqueJoueur() -5); + } + else { + System.out.println("Il n'y a pas la place pour placer une unité autour ! Rendez l'argent !"); + } + break; + + default: + break; + } + } + } + + public String getName() { + return "Village event"; + } + +} diff --git a/src/main/Case.java b/src/main/Case.java index b2c7ca80c9142f44dbc2e81641c43dca45ca1653..09dceaea56680fab4ecdcda3b726526f316f1e33 100644 --- a/src/main/Case.java +++ b/src/main/Case.java @@ -15,7 +15,8 @@ public class Case { private Unite unite; private int x; private int y; - private boolean aEteVu; + private boolean pille; + private int tempsDepuisPillage; public Case(Type type) { this.type = type; @@ -24,6 +25,26 @@ public class Case { this.events = new ArrayList<Evenements>(); this.x = 0; this.y = 0; + this.pille = false; + this.tempsDepuisPillage = 0; + } + public void setPillage() { + this.pille = true; + this.tempsDepuisPillage = 5; + } + public boolean getPille () { + return this.pille; + } + public void setPille (boolean pille) { + this.pille = pille; + } + public void decreaseTimePillage () { + if (this.tempsDepuisPillage == 0) { + setPille(false); + } + else { + this.tempsDepuisPillage--; + } } public void setX(int x) { this.x = x; @@ -78,6 +99,7 @@ public class Case { } public String toString() { + if (!this.isDecouverte()) { return "~ "; } @@ -88,14 +110,18 @@ public class Case { return ". "; } else if (this.type == Type.MOUNTAIN) { - return "m "; + return "Ѧ "; } else if (this.type == Type.FORT) { - return "♖ "; + return "♜ "; + //return "♖ "; } else if (this.type == Type.CAMP) { return "O "; } + else if (this.type == Type.VILLAGE) { + return "V "; + } else { return "? ";} } } diff --git a/src/main/Region.java b/src/main/Region.java index b0b348ec6a0dd34d6e7e55d7ac696e86176f909a..ee476552787ee92495d8cf4a2ea587ac1663f05e 100644 --- a/src/main/Region.java +++ b/src/main/Region.java @@ -4,6 +4,7 @@ import java.util.Random; import events.CrownReceived; import events.FortEvent; +import events.VillageEvent; public class Region { public Case[][] region = new Case[5][5]; @@ -32,6 +33,13 @@ public class Region { int rd2 = (int)random.nextInt(5); region[rd1][rd2].addEvents(new FortEvent()); region[rd1][rd2].setType(Type.FORT); + int k = (int)random.nextInt(2); + for (int l = 0; l < k; l++) { + rd1 = (int)random.nextInt(5); + rd2 = (int)random.nextInt(5); + region[rd1][rd2].addEvents(new VillageEvent()); + region[rd1][rd2].setType(Type.VILLAGE); + } } public void changeToCamp() { for (int i = 0; i < region.length; i++) { diff --git a/src/main/Scan.java b/src/main/Scan.java index 4eea18fc814e90ed8d2d8c5a661dc4c49025a8e3..08a571f34d36f3de963fec2be401368ef0025739 100644 --- a/src/main/Scan.java +++ b/src/main/Scan.java @@ -19,5 +19,28 @@ public class Scan { return res; } + + public static String readString() { + String res = ""; + Scanner scanner = new Scanner(System.in); + res = scanner.nextLine(); + scanner.close(); + return res; + } + + public static String readString(String message) { + String res = ""; + Scanner scanner = new Scanner(System.in); + System.out.println(message); + res = scanner.nextLine(); + scanner.close(); + return res; + } + + public static void clearScreen() { + for( int i = 0 ; i < 100; i++) { + System.out.println(); + } + } } diff --git a/src/main/Type.java b/src/main/Type.java index bdfacc4ab2b794f54a2785d7d71be011f0b47d1e..9f0fb3e27d9a19afeccdf5a02fa53de2a056e92b 100644 --- a/src/main/Type.java +++ b/src/main/Type.java @@ -1,5 +1,5 @@ package main; public enum Type { - UNITE,GRASS, MOUNTAIN, CAMP, FORT; + UNITE,GRASS, MOUNTAIN, CAMP, VILLAGE, FORT; } diff --git a/src/units/Paysant.java b/src/units/Paysant.java index f361b7e5fb16d3d4d09396d93d3af5b09304e6eb..82b305201a6e0099c31baa193785d15fe2b6dff3 100644 --- a/src/units/Paysant.java +++ b/src/units/Paysant.java @@ -11,7 +11,7 @@ public class Paysant extends Unite{ public static final int DAMAGE = 1; public static final char SYMBOL = 'p'; public static final int PATOGIVE = 1; - public static final int VISION = 4; + public static final int VISION = 1; public Paysant(int x, int y, Plateau plateau, Joueur joueur) { super(x, y, plateau, SYMBOL, ARMOR, DAMAGE, joueur, VISION); diff --git a/src/units/Unite.java b/src/units/Unite.java index 5303c5c3fb742feb344015febed73c75c352f2de..bbc3ffa0ca331740df28851a88ce916958d74f77 100644 --- a/src/units/Unite.java +++ b/src/units/Unite.java @@ -207,6 +207,7 @@ public abstract class Unite { this.plateau.getCase(x, y).setType(Type.GRASS); this.x=rd1; this.y=rd2; + updateDecouverte(this.plateau.getCase(rd1, rd2), this.vision); } public void updateDecouverte (Case emplacement, int vision) { if (vision > -1) { @@ -224,7 +225,7 @@ public abstract class Unite { } if (emplacement.getY() < 29) { this.plateau.getCase(emplacement.getX(), emplacement.getY() +1).setDecouverte(true); - if (this.plateau.getCase(emplacement.getX()+1, emplacement.getY()+1).getType() != Type.MOUNTAIN) { + if (this.plateau.getCase(emplacement.getX(), emplacement.getY()+1).getType() != Type.MOUNTAIN) { updateDecouverte(this.plateau.getCase(emplacement.getX(), emplacement.getY() +1), vision-1); } }