1
0
mirror of https://github.com/Klagarge/PokeHES.git synced 2024-11-22 17:33:27 +00:00

Merge pull request #51 from Klagarge:change-for-row

Change-for-row
This commit is contained in:
Rémi Heredero 2022-06-20 17:01:39 +02:00 committed by GitHub
commit 46ef9c5c82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 161 additions and 41 deletions

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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(){
}

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -1,5 +1,10 @@
package Text;
/**
* @author Rémi Heredero
* @author Yann Sierro
* @version 1.0.0
*/
public class Attack {
String attack;
int currentAttack;

View File

@ -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<Attack> attacks = new Vector<Attack>();

View File

@ -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;

View File

@ -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<String> speechs = new Vector<String>();

View File

@ -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<int[]> 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<int[]>();
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);