diff --git a/src/Control/Controller.java b/src/Control/Controller.java index bf4a3fd..9303ebd 100644 --- a/src/Control/Controller.java +++ b/src/Control/Controller.java @@ -25,6 +25,7 @@ public class Controller { keyStatus.put(Input.Keys.NUM_3, false); keyStatus.put(Input.Keys.NUM_4, false); keyStatus.put(Input.Keys.SPACE, false); + keyStatus.put(Input.Keys.A, false); keyStatus.put(Input.Keys.ENTER, false); } diff --git a/src/Control/Keyboard.java b/src/Control/Keyboard.java index 5bdd215..a7dd09d 100644 --- a/src/Control/Keyboard.java +++ b/src/Control/Keyboard.java @@ -1,5 +1,7 @@ package Control; +import com.badlogic.gdx.Input; + import Screen.ScreenPlayer; /** @@ -10,9 +12,11 @@ import Screen.ScreenPlayer; */ public class Keyboard { public void keyDown(int keycode, ScreenPlayer sp, Controller c) { + if (keycode == Input.Keys.SPACE) c.keyStatus.put(Input.Keys.A, true); c.keyStatus.put(keycode, true); } public void onKeyUp(int keycode, ScreenPlayer sp, Controller c) { + if (keycode == Input.Keys.SPACE) c.keyStatus.put(Input.Keys.A, false); c.keyStatus.put(keycode, false); } } diff --git a/src/Entity/Enemy.java b/src/Entity/Enemy.java index 9ad00ae..f6756d3 100644 --- a/src/Entity/Enemy.java +++ b/src/Entity/Enemy.java @@ -4,6 +4,11 @@ import com.badlogic.gdx.math.Vector2; import Main.Settings; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Enemy extends Character{ private String subject; diff --git a/src/Entity/Player.java b/src/Entity/Player.java index 9cce05b..15a4ec3 100644 --- a/src/Entity/Player.java +++ b/src/Entity/Player.java @@ -11,6 +11,11 @@ import Main.PokeHES; import Main.Settings; import Screen.ScreenMap; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Player extends Character{ private int xp = 0; diff --git a/src/Entity/Stuff.java b/src/Entity/Stuff.java index 6562e43..1d4f60b 100644 --- a/src/Entity/Stuff.java +++ b/src/Entity/Stuff.java @@ -2,6 +2,11 @@ package Entity; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Stuff extends Entity{ public Stuff(String name, int x, int y, String map) { diff --git a/src/Game/Battle.java b/src/Game/Battle.java index 0b8e8b9..03b4f07 100644 --- a/src/Game/Battle.java +++ b/src/Game/Battle.java @@ -4,6 +4,11 @@ import Entity.Enemy; import Entity.Player; import Text.TextEnemy; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.2 + */ public class Battle { public Enemy e; @@ -18,12 +23,14 @@ public class Battle { public int xpPlayer; public boolean screenBattleOn = true; + public int cursor = 0; public Battle(Enemy e){ if(e != null){ textEnemy = new TextEnemy(e); - textEnemy.generateText(); + textEnemy.generateText(cursor); } + pvEnemy = e.getPv(); lineSpeech = 0; newXp = 0; @@ -31,17 +38,14 @@ public class Battle { public void readNextLine(){ //change line - System.out.println(textEnemy.lines.size()); + //System.out.println(textEnemy.lines.size()); if(lineSpeech < 5){ lineSpeech++; } - } public void action(int answer){ - System.out.println("pv enemy : " +pvEnemy); - System.out.println("xp player : " + xpPlayer); - System.out.println("xp win " + newXp); + textEnemy.randomAnswer(); //the player is at the last question, the finish text must be displayed if(getLineSpeech() == 4){ @@ -96,10 +100,10 @@ public class Battle { public void updatePlayerEnemy(int xp){ //add xp for the player xpPlayer += xp; + if(xpPlayer>6000) xpPlayer = 6000; //remove pv enemy pvEnemy -= xp; if(pvEnemy<0) pvEnemy =0; - } public void finishSpeech(){ @@ -156,4 +160,8 @@ public class Battle { public void setPlayer(Player p){ this.player = p; } + + public void updateText(){ + if(e != null) textEnemy.generateText(cursor); + } } diff --git a/src/Main/PokeHES.java b/src/Main/PokeHES.java index c326f20..e79904e 100644 --- a/src/Main/PokeHES.java +++ b/src/Main/PokeHES.java @@ -2,6 +2,8 @@ package Main; import java.util.Vector; +import com.badlogic.gdx.Input; + import Control.Controller; import Entity.Enemy; import Entity.Entity; @@ -13,6 +15,11 @@ import Screen.ScreenPlayer; import ch.hevs.gdx2d.desktop.PortableApplication; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.2 + */ public class PokeHES extends PortableApplication { private ScreenPlayer sp; @@ -144,14 +151,16 @@ public class PokeHES extends PortableApplication { public void onKeyDown(int keycode) { super.onKeyDown(keycode); risingFront = true; + if (keycode == Input.Keys.SPACE) controller.keyStatus.put(Input.Keys.A, true); + if (keycode == Input.Keys.ENTER) controller.keyStatus.put(Input.Keys.A, true); controller.keyStatus.put(keycode, true); - sp.screenManager.getActiveScreen().onKeyUp(keycode); } @Override public void onKeyUp(int keycode) { super.onKeyUp(keycode); risingFront = false; + if (keycode == Input.Keys.SPACE) controller.keyStatus.put(Input.Keys.A, false); + if (keycode == Input.Keys.ENTER) controller.keyStatus.put(Input.Keys.A, false); controller.keyStatus.put(keycode, false); - sp.screenManager.getActiveScreen().onKeyDown(keycode); } } diff --git a/src/Main/Settings.java b/src/Main/Settings.java index 75e5b30..c263d00 100644 --- a/src/Main/Settings.java +++ b/src/Main/Settings.java @@ -1,5 +1,10 @@ package Main; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Settings { public static final boolean ANDROID = false; diff --git a/src/Screen/ManagerOfScreen.java b/src/Screen/ManagerOfScreen.java index dc4b3b5..614c8af 100644 --- a/src/Screen/ManagerOfScreen.java +++ b/src/Screen/ManagerOfScreen.java @@ -2,6 +2,11 @@ package Screen; import ch.hevs.gdx2d.lib.ScreenManager; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class ManagerOfScreen extends ScreenManager{ ManagerOfScreen(){ } diff --git a/src/Screen/ScreenBattle.java b/src/Screen/ScreenBattle.java index 1485c5e..0e2c854 100644 --- a/src/Screen/ScreenBattle.java +++ b/src/Screen/ScreenBattle.java @@ -17,6 +17,11 @@ import ch.hevs.gdx2d.components.bitmaps.BitmapImage; import ch.hevs.gdx2d.components.screen_management.RenderingScreen; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.2 + */ public class ScreenBattle extends RenderingScreen{ private static int EDGE = 10; @@ -28,7 +33,7 @@ public class ScreenBattle extends RenderingScreen{ private BitmapImage enemyImg; private BitmapImage playerImg; - private Battle b = null; + public Battle b = null; @Override @@ -109,27 +114,43 @@ public class ScreenBattle extends RenderingScreen{ public void manage(Controller c, Battle battle){ //add a rising front to have one impulsion if(PokeHES.risingFront){ - //the enemi is attacking - if( battle.getAttackOn() == false){ - if (c.keyStatus.get(Input.Keys.SPACE)){ + + if (c.keyStatus.get(Input.Keys.DOWN)){ + battle.cursor++; + } + else if (c.keyStatus.get(Input.Keys.UP)){ + battle.cursor--; + } + + if (battle.cursor > 3) battle.cursor = 0; + if (battle.cursor < 0) battle.cursor = 3; + + if( battle.getAttackOn() == false){ //the enemy is attacking + if (c.keyStatus.get(Input.Keys.SPACE) || c.keyStatus.get(Input.Keys.A)){ battle.action(-1); + battle.cursor = 0; } - } - //the enemi is speaking - if(battle.getAttackOn() == true){ - if (c.keyStatus.get(Input.Keys.NUM_1)){ + } else if(battle.getAttackOn() == true){ //the enemy is speaking + if (c.keyStatus.get(Input.Keys.NUM_1) || c.keyStatus.get(Input.Keys.A) && b.cursor == 0){ battle.action(1); + battle.cursor = 0; } - else if (c.keyStatus.get(Input.Keys.NUM_2)){ + else if (c.keyStatus.get(Input.Keys.NUM_2) || c.keyStatus.get(Input.Keys.A) && b.cursor == 1){ battle.action(2); + battle.cursor = 0; } - else if (c.keyStatus.get(Input.Keys.NUM_3)){ + else if (c.keyStatus.get(Input.Keys.NUM_3) || c.keyStatus.get(Input.Keys.A) && b.cursor == 2){ battle.action(3); + battle.cursor = 0; } - else if (c.keyStatus.get(Input.Keys.NUM_4)){ + else if (c.keyStatus.get(Input.Keys.NUM_4) || c.keyStatus.get(Input.Keys.A) && b.cursor == 3){ battle.action(4); + battle.cursor = 0; } } + + b.updateText(); + //mettre le front à false jusqu'à ce que le bouton soit relâché PokeHES.risingFront = false; } diff --git a/src/Screen/ScreenEnd.java b/src/Screen/ScreenEnd.java index 761321e..0b3c13f 100644 --- a/src/Screen/ScreenEnd.java +++ b/src/Screen/ScreenEnd.java @@ -12,15 +12,20 @@ import Main.Settings; import ch.hevs.gdx2d.components.screen_management.RenderingScreen; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class ScreenEnd extends RenderingScreen{ private String textEnd = null; - private BitmapFont unbuntuRegularWhite; + private BitmapFont ubuntuRegularWhite; @Override public void onInit() { //generate a new font - unbuntuRegularWhite = generateFont("font/Ubuntu-Regular.ttf", 30, Color.WHITE); + ubuntuRegularWhite = generateFont("font/Ubuntu-Regular.ttf", 30, Color.WHITE); } @@ -30,13 +35,13 @@ public class ScreenEnd extends RenderingScreen{ g.clear(Color.BLACK); //display the text - if(textEnd != null) g.drawStringCentered(Settings.SIDE/2, textEnd, unbuntuRegularWhite); + if(textEnd != null) g.drawStringCentered(Settings.SIDE/2, textEnd, ubuntuRegularWhite); } @Override public void dispose() { - unbuntuRegularWhite.dispose(); + ubuntuRegularWhite.dispose(); } //set a different text if the player win or loose diff --git a/src/Screen/ScreenMap.java b/src/Screen/ScreenMap.java index 89a3033..ec27cad 100644 --- a/src/Screen/ScreenMap.java +++ b/src/Screen/ScreenMap.java @@ -21,6 +21,11 @@ import Entity.Player; import ch.hevs.gdx2d.components.screen_management.RenderingScreen; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.1 + */ public class ScreenMap extends RenderingScreen{ // tiles management diff --git a/src/Screen/ScreenPlayer.java b/src/Screen/ScreenPlayer.java index b5c6a05..f419a0f 100644 --- a/src/Screen/ScreenPlayer.java +++ b/src/Screen/ScreenPlayer.java @@ -5,6 +5,11 @@ import Entity.Player; import Game.Battle; import ch.hevs.gdx2d.lib.GdxGraphics; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class ScreenPlayer { public ManagerOfScreen screenManager = new ManagerOfScreen(); public Player p = null; diff --git a/src/Text/Attack.java b/src/Text/Attack.java index 9835acf..30f02d2 100644 --- a/src/Text/Attack.java +++ b/src/Text/Attack.java @@ -1,5 +1,10 @@ package Text; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Attack { String attack; int currentAttack; diff --git a/src/Text/FightData.java b/src/Text/FightData.java index ba7b3a7..aaa4147 100644 --- a/src/Text/FightData.java +++ b/src/Text/FightData.java @@ -6,6 +6,11 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Vector; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class FightData { private Vector attacks = new Vector(); diff --git a/src/Text/Line.java b/src/Text/Line.java index 64df4ab..f6b2866 100644 --- a/src/Text/Line.java +++ b/src/Text/Line.java @@ -1,5 +1,10 @@ package Text; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class Line { public String line; public boolean attackOn; diff --git a/src/Text/SpeechData.java b/src/Text/SpeechData.java index ac20da6..b00267a 100644 --- a/src/Text/SpeechData.java +++ b/src/Text/SpeechData.java @@ -6,6 +6,11 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Vector; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.0 + */ public class SpeechData { Vector speechs = new Vector(); diff --git a/src/Text/TextEnemy.java b/src/Text/TextEnemy.java index b990934..eac4543 100644 --- a/src/Text/TextEnemy.java +++ b/src/Text/TextEnemy.java @@ -5,6 +5,11 @@ import java.util.Vector; import java.util.Arrays; import java.util.Random; +/** + * @author Rémi Heredero + * @author Yann Sierro + * @version 1.0.2 + */ public class TextEnemy { private static final int CUT = 55; public FightData fightData; @@ -17,6 +22,8 @@ public class TextEnemy { private Vector currentData; + int[] currentRandom = new int[5]; + public TextEnemy(Enemy e){ //generate the vector of fight fightData = new FightData(e.getBranch()); @@ -29,6 +36,20 @@ public class TextEnemy { //save random data (attack and answer) : attack, answer 1, answer 2 answer 3, answer 4 currentData = new Vector(); + orderAttack = randomGenerate(0, fightData.nbr_line-1, 4); + + randomAnswer(); + + } + + public void randomAnswer(){ + //generate a random array to determine the order of the answer + orderAnswer = randomGenerate(0, 3, 4); + + //save the order of answer and attack + for(int k=1;k<5;k++){ + currentRandom[k] = orderAnswer[k-1]; + } } public static int[] randomGenerate( int min, int max, int nbrRandom){ @@ -66,35 +87,31 @@ public class TextEnemy { //generate the text who is displays in battle screen - public void generateText(){ + public void generateText(int cursor){ + lines.clear(); + currentData.clear(); int i =1; //introduction line String introduction = formatLine(speechData.getSpeechs(0), CUT); lines.add(new Line(introduction, false)); - orderAttack = randomGenerate(0, fightData.nbr_line-1, 4); + //orderAttack = randomGenerate(0, fightData.nbr_line-1, 4); for(int j=0; j<4;j++){ - int[] currentRandom = new int[5]; currentRandom[0] = orderAttack[j]; - //generate a random array to determine the order of the answer - orderAnswer = randomGenerate(0, 3, 4); - - //save the order of answer and attack - for(int k=1;k<5;k++){ - currentRandom[k] = orderAnswer[k-1]; - } - //Format the line + String[] row = new String[4]; + row[0] = row[1] = row[2] = row[3] = " "; + row[cursor] = "->"; String attack = formatLine(speechData.getSpeechs(i++) + fightData.getAttack(orderAttack[j]).attack + " ("+fightData.getAttack(orderAttack[j]).getXp()+ ") ", CUT); - String answer1 = formatLine("1. " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[0]) , CUT); - String answer2 = formatLine("2. " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[1]) , CUT); - String answer3 = formatLine("3. " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[2]) , CUT); - String answer4 = formatLine("4. " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[3]) , CUT); + String answer1 = formatLine(row[0] + " " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[0]) , CUT); + String answer2 = formatLine(row[1] + " " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[1]) , CUT); + String answer3 = formatLine(row[2] + " " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[2]) , CUT); + String answer4 = formatLine(row[3] + " " + fightData.getAttack(orderAttack[j]).getAnswer(orderAnswer[3]) , CUT); - //attack and answer (number on vector : 1-4) + //attack and answer (number on vector : 1-4) lines.add(new Line(attack + "\n" +answer1 + "\n" + answer2 + "\n" + answer3 + "\n" + answer4, true)); //save the order of the answer @@ -102,11 +119,11 @@ public class TextEnemy { } //display answer + System.out.println("----------"); for(int[] a : currentData){ System.out.println(Arrays.toString(a)); } - //finish (win and death) String dead = formatLine(speechData.getSpeechs(5),CUT); String alive = formatLine(speechData.getSpeechs(6), CUT);