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/CrownReceived.java b/src/events/CrownReceived.java index 8bf4893e7341677cf5a029d2381727d1bab6e993..adc15df3b4e7073868ef651a0b48b58c7c6982d5 100644 --- a/src/events/CrownReceived.java +++ b/src/events/CrownReceived.java @@ -8,6 +8,7 @@ public class CrownReceived implements Evenements{ if(eventCase.getUnite().getItem().getName().equals("Crown")) { Joueur joueur = eventCase.getUnite().getJoueur(); joueur.setWin(true); + System.out.println("vous avez gagné !!!!!!"); } } diff --git a/src/events/FortEvent.java b/src/events/FortEvent.java index 6d589be5fd006012f7d8a1fd65f68dcebf845355..1f9a8d259103e489beb1de17132c7c564512b449 100644 --- a/src/events/FortEvent.java +++ b/src/events/FortEvent.java @@ -9,17 +9,24 @@ import units.Unite; public class FortEvent implements Evenements{ private Joueur owner = null; - private int fortDamage = 5; + private int fortDamage = 1; public void action(Case eventCase) { Joueur visiteur = eventCase.getUnite().getJoueur(); Unite uniteVisiteur = eventCase.getUnite(); - if (eventCase.getType() == Type.FORT) { + + if (eventCase.getType() == Type.UNITE) { + + System.out.println("evenelent fort déclenché"); + if (owner == null) { - uniteVisiteur.setArmor(uniteVisiteur.getArmor()-fortDamage); + int armorTemp = uniteVisiteur.getArmor(); + uniteVisiteur.setArmor(armorTemp-fortDamage); if (Combattre.isAlive(uniteVisiteur)) { owner = visiteur; uniteVisiteur.getPlateau().getRegion(uniteVisiteur.getX(), uniteVisiteur.getY()).setProprietaire(visiteur); + }else { + eventCase.setType(Type.FORT); } }else if(owner.getNomJoueur().equals(visiteur.getNomJoueur())) { System.out.println("Vous accupez maintenant votre fort !"); @@ -27,6 +34,7 @@ public class FortEvent implements Evenements{ owner = visiteur; uniteVisiteur.getPlateau().getRegion(uniteVisiteur.getX(), uniteVisiteur.getY()).setProprietaire(visiteur); } + } } 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/Interface.java b/src/main/Interface.java index e4ac55e248668c50a79a15a61b5f092552af9eb8..031edd296289f6cf0e943c9826d0ee8eb3c6e6af 100644 --- a/src/main/Interface.java +++ b/src/main/Interface.java @@ -3,59 +3,33 @@ package main; import units.Unite; public class Interface { + private static Affichage a = new Affichage(); private static int rep = 0; - public static void start() { + public static int start() { System.out.println("Bienvenu sur Game of Crown"); System.out.println("Veuillez choisir l'une des trois options suivantes en tapant le numéro correspondant dans le terminal"); System.out.println("1: Commencer une partie"); System.out.println("2: Consulter les règles"); System.out.println("3: Quitter le jeu"); - rep = Scan.scan(3); - if(rep==1) { - - }else if(rep==2) { - System.out.println("Le but du jeu est de prendre la couronne situé sur une case aléatoire \ndu terrain et de la ramener dans son camp ou de détruire l'armée de \nson adversaire"); - }else if(rep==3) { - - } + rep = Scan.scan(3); + if(rep==2) { + System.out.println("\nLe but du jeu est de prendre la couronne situé sur une case aléatoire \ndu terrain et de la ramener dans son camp ou de détruire l'armée de \nson adversaire\n"); + } + return rep; } public static void tourDeJeu(Plateau plateau, Joueur j1) { rep =-1; - Affichage.affichage(plateau); + a.affichage(plateau); System.out.println("Choissisez l'unité que vous voulez déplacer"); - for(int i = 0; i< j1.getArmee().size(); i++) { - System.out.println(i+": "+ j1.getArmee().get(1).toString()); - } - Unite u =j1.getArmee().get((Scan.scan(j1.getArmee().size()))); - System.out.println("vous pouvez..."); - if(u.getX()>0) { - if(plateau.getCase(u.getX()-1, u.getY()).getUnite()!=null){ - System.out.println("1: Combattre l'unité au-dessus"); - }else { - System.out.println("1: Se déplacer vers le haut"); - } - } - if(u.getX()<plateau.getPlateau().length*5) { - if(plateau.getCase(u.getX()+1, u.getY()).getUnite()!=null){ - System.out.println("2: Combattre l'unité en bas"); - }else { - System.out.println("2: Se déplacer vers le bas"); - } - } - if(u.getY()<plateau.getPlateau().length*5) { - if(plateau.getCase(u.getX(), u.getY()+1).getUnite()!=null){ - System.out.println("3: Combattre l'unité à droite"); - }else { - System.out.println("3: Se déplacer vers la droite"); - } - } - if(u.getY()>0) { - if(plateau.getCase(u.getX(), u.getY()-1).getUnite()!=null){ - System.out.println("4: Combattre l'unité à gauche"); - }else { - System.out.println("4: Se déplacer vers la gauche"); + if(j1.getArmee().size()!=0) { + for(int i = 0; i< j1.getArmee().size(); i++) { + System.out.println(i+1 +": "+ j1.getArmee().get(i).toString()); } + Unite u =j1.getArmee().get(Scan.scan(j1.getArmee().size())-1); + u.move(Main.deplacement()); + a.affichage(plateau); + }else { + System.out.println("Aucune unité disponible"); } - rep = Scan.scan(4); } } diff --git a/src/main/Main.java b/src/main/Main.java index a2e631abf61d5829d9fb9fbedc6fbfb04cef03f1..8aae5ece2cf1b087f7c1abb42df5b22329bdbac9 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -9,8 +9,11 @@ public class Main { private static Joueur joueur2 = new Joueur("Joueur 2", 25, 15); private Joueur winner = null; private int actionPoint; + static Main m = new Main(); public static void main(String[] args) { + Affichage a = new Affichage(); + /* * Region[][] regions = new Region[6][6]; for(int i = 0; i<regions.length; i++) * { for(int j = 0; j<regions[i].length; j++) { regions[i][j] = new Region(); } @@ -19,6 +22,7 @@ public class Main { Plateau plateau = new Plateau(); + plateau.getCase(joueur1.xCamp, joueur1.yCamp).setUnite(new Paysant(joueur1.xCamp, joueur1.yCamp, plateau, joueur1)); plateau.getCase(joueur2.xCamp, joueur2.yCamp).setUnite(new Paysant(joueur2.xCamp, joueur2.yCamp, plateau, joueur2)); joueur1.getArmee().get(0).getPlateau().getRegion(joueur1.xCamp-1,joueur1.yCamp-1).changeToCamp(); @@ -27,9 +31,11 @@ public class Main { while(true!=false) { joueur1.getArmee().get(0).move(deplacement()); //System.out.println(winner.getArmee().get(0).getPlateau().getRegion(0, 0).); + System.out.println('\n'); System.out.println(joueur1.getArmee().get(0).getX()); //winner.getArmee().get(0).teleporte(); + Affichage.affichage(plateau); //joueur2.getArmee().get(0).move(deplacement()); @@ -42,9 +48,18 @@ public class Main { //Affichage.affichage(plateau); //Menu(); } - - public static void Menu() { - System.out.print("Bienvenue dans Game of Crown, vous êtes actuellement sur le Menu !"); + + public void menu (Plateau plateau) { + int continuer= 2; + while(continuer != 3) { + while(continuer==2) { + continuer =Interface.start(); + } + if(continuer !=3) { + continuer =2; + m.game(new Joueur[]{winner,null}, plateau); + } + } } public static char deplacement() { @@ -57,19 +72,21 @@ public class Main { return sc.next().charAt(0); } - private Joueur Game(Joueur[] joueurs) { + private Joueur game(Joueur[] joueurs, Plateau plateau) { boolean gameEnd = false; - while (gameEnd) { + while (!gameEnd) { for (Joueur currentPlayer : joueurs) { setActionPoint(currentPlayer); - Tour(currentPlayer, actionPoint); + Tour(currentPlayer, actionPoint, plateau); } } return getWinner(); } - public void Tour(Joueur currentPlayer, int actionPoint) { - + public void Tour(Joueur currentPlayer, int actionPoint, Plateau plateau) { + for(int i =0; i<actionPoint; i++) { + Interface.tourDeJeu(plateau, currentPlayer); + } } public void setActionPoint(int actionPoint) { @@ -84,6 +101,7 @@ public class Main { return this.actionPoint; } + public void setWinner(Joueur winner) { this.winner = winner; } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 752a7d10a462e4da875ea6a63f2622b7928eb01d..53cfef0ceeee1ff3bc7b25cc22eaff31bc913fbe 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -18,9 +18,13 @@ public class Plateau { plateau[i][j].fillRegion(); } } - int rd1 = (int)random.nextInt(10)+10; - int rd2 = (int)random.nextInt(30); - this.getCase(rd1, rd2).setItem(new Crown(this.getCase(0, 0))); + int rd1; + int rd2; + do { + rd1 = (int)random.nextInt(10)+10; + rd2 = (int)random.nextInt(30); + this.getCase(rd1, rd2).setItem(new Crown(this.getCase(0, 0))); + } while (this.getCase(rd1, rd2).getType() != Type.GRASS); } public Case getCase(int x, int y) { return getRegion(x,y).region[x%5][y%5]; diff --git a/src/main/Region.java b/src/main/Region.java index d467efbb1a4399c89707f0bb82e0c54abf4bf450..ee476552787ee92495d8cf4a2ea587ac1663f05e 100644 --- a/src/main/Region.java +++ b/src/main/Region.java @@ -2,7 +2,9 @@ package main; import java.util.Random; +import events.CrownReceived; import events.FortEvent; +import events.VillageEvent; public class Region { public Case[][] region = new Case[5][5]; @@ -31,12 +33,20 @@ 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++) { for (int j = 0; j < region[0].length; j++) { if (region[i][j].getType()==Type.FORT) { region[i][j].setType(Type.CAMP); + region[i][j].addEvents(new CrownReceived()); } } } diff --git a/src/main/Scan.java b/src/main/Scan.java index e11ff9d6c984a70bc32afca610c2423e443878d5..08a571f34d36f3de963fec2be401368ef0025739 100644 --- a/src/main/Scan.java +++ b/src/main/Scan.java @@ -15,9 +15,32 @@ public class Scan { System.out.println("Veuillez entrer un nombre entre 1 et " + nbOfQuestion); sc.nextLine(); } - } while (res <= 0 || res > nbOfQuestion); - sc.close(); + } while (res <= 0 || res > nbOfQuestion); + 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/Archer.java b/src/units/Archer.java index 83586c1e38f552b1c144fdeb7b23de971db999ef..be192c95ce4b2aba157679f6c6e6faa1e4389b3e 100644 --- a/src/units/Archer.java +++ b/src/units/Archer.java @@ -7,7 +7,7 @@ public class Archer extends Unite{ public static final int ARMOR = 5; public static final int DAMAGE = 5; - public static final char SYMBOL = 'A'; + public static final char SYMBOL = 'Ð'; public static final int VISION = 2; public Archer(int x, int y, Plateau plateau, Joueur joueur) { diff --git a/src/units/Chevalier.java b/src/units/Chevalier.java index 583bfb0bc41f78e31b160f62530e0521a9d7b8dd..c469aaccdacef3ffe376bb7e9644ec0618f0f928 100644 --- a/src/units/Chevalier.java +++ b/src/units/Chevalier.java @@ -7,7 +7,7 @@ public class Chevalier extends Unite { public static final int ARMOR = 10; public static final int DAMAGE = 5; - public static final char SYMBOL = 'C'; + public static final char SYMBOL = '⚔'; public static final int VISION = 2; public Chevalier(int x, int y, Plateau plateau, Joueur joueur) { diff --git a/src/units/Combattre.java b/src/units/Combattre.java index 5fcf9f75895b0a0b0721bc3ab78fd6c7a21b424f..3778dab0f9d17368a96616b7f95d512afd6684a7 100644 --- a/src/units/Combattre.java +++ b/src/units/Combattre.java @@ -9,9 +9,7 @@ public class Combattre { uniteDef.setArmor(uniteDef.getArmor()-uniteAttq.getDamage()); if (isAlive(uniteDef)) { - //TODO: peut �tre mettre moins de d�gat pour l'unit� qui d�fend uniteAttq.setArmor(uniteAttq.getArmor()-uniteDef.getDamage()); - //TODO: attention au archer ! isAlive(uniteAttq); } } diff --git a/src/units/Eclaireur.java b/src/units/Eclaireur.java index 62aaeb6e6db81bec5623ebcfdaab96da03986d49..451122afcc6a67108952b379cc40cd6f9ec33bf0 100644 --- a/src/units/Eclaireur.java +++ b/src/units/Eclaireur.java @@ -7,7 +7,7 @@ public class Eclaireur extends Unite { public static final int ARMOR = 1; public static final int DAMAGE = 0; - public static final char SYMBOL = 'E'; + public static final char SYMBOL = '♞'; public static final int VISION = 2; public Eclaireur(int x, int y, Plateau plateau, Joueur joueur) { diff --git a/src/units/Paysant.java b/src/units/Paysant.java index f361b7e5fb16d3d4d09396d93d3af5b09304e6eb..613cb2dc9dc3c0b4e6496076f65865cdec64048b 100644 --- a/src/units/Paysant.java +++ b/src/units/Paysant.java @@ -9,9 +9,9 @@ public class Paysant extends Unite{ public static final int ARMOR = 2; public static final int DAMAGE = 1; - public static final char SYMBOL = 'p'; + public static final char SYMBOL = '☭'; 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 a40d44dc3c3b4ade2cc588d5da077f5ccc83b085..35b2860cfb9b60d848bb63752a2d681fb32a885b 100644 --- a/src/units/Unite.java +++ b/src/units/Unite.java @@ -219,6 +219,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) { @@ -236,7 +237,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); } }