Skip to content
Snippets Groups Projects
Select Git revision
  • 2fc85676c8f988a0bbdbad37d1addc23c723d9d4
  • main default protected
  • 39-retour-utilisateur-sur-le-compteur
3 results

Level.java

Blame
  • Level.java 8.52 KiB
    package bitFight;
    
    import java.io.IOException;
    import java.util.Scanner;
    
    public class Level{
    
        int nbLevel;
        Player player;
        Enemy ennemy;
    
        public Level(int nbLevel, Player player, Enemy ennemy){
            this.nbLevel=nbLevel;
            this.player = player;
            this.ennemy = ennemy;
        }
        
        // accesseurs 
        public int getNbLevel() {
            return nbLevel;
        }
        public Enemy getEnnemy() {
            return ennemy;
        }
        public Player getPlayer() {
            return player;
        }
    
        // mutateurs
        public void setNbLevel(int nbLevel) {
            this.nbLevel = nbLevel;
        }
        
        public void setEnnemy(Enemy ennemy) {
            this.ennemy = ennemy;
        }
        public void setPlayer(Player player) {
            this.player = player;
        }
    
        // sert seulement à laisser l'utilisateur appuyer sur entrée pour passer
        public boolean check() {
            Scanner sc = new Scanner(System.in);
            String c = sc.nextLine();
            if (c == null) {
                sc.close();
                return false;
            }
            sc.close();
            return true;
        }
    
        // méthodes d'affichage
        // affiche le numéro de niveau
        public void displayLevelInfos() {
            System.out.println("Level " + this.nbLevel);
        }
    
        // annonce un nouvel ennemi
        public void ennemyShowing() {
            Display.clearDialogBox();
            System.out.println("An ennemy just appeared : " + this.ennemy.toString());
            System.out.println();
            Display.goToUserInput();
        }
    
        public void ennemyFaster(Attack attack) throws IOException {
            Display.clearDialogBox();
            System.out.println("The ennemy attacks before you can !");
            player.setCurrentHealth(player.getCurrentHealth() - attack.getDamage() * this.ennemy.getAttackMultiplier()); //Récupère une attaque aléatoire dans l'enum
            ennemy.exhaust(attack.getEnergyCost());
            System.out.println(attack.getName() + "!! You receive " + (int) (attack.getDamage() * this.ennemy.getAttackMultiplier()) + " damage!");
            System.out.println(this.player.getName() + "'s life' : " + this.displayPlayerHealth());
            Display.goToUserInput();
        }
    
    
        // affiche la jauge de vie 
            
        public void displayLifePoints (){
            System.err.println();
            System.out.println("Player " + this.player.getName());
            System.out.println();
            System.out.print(Terminal.GREEN+" \t current health "+Terminal.RESET);
            double pourcentage = (this.player.getCurrentHealth()/this.player.getMaxHealth())*100;
            for (int indice = 0; indice < pourcentage/2; indice ++){
                if (pourcentage<=50){
                    System.out.print(Terminal.RED+"▬");
                }else{
                    System.out.print(Terminal.GREEN+ "▬"+Terminal.RESET);
                }
            }
            System.out.print(" ");
            System.err.println( (int) this.player.getCurrentHealth() + "/" + (int) this.player.getMaxHealth() + "                 ");
            System.out.print(Terminal.YELLOW+"\t current energy "+Terminal.RESET);
            for (int indice = 0; indice < (this.player.getCurrentEnergy())/2; indice ++){
                System.out.print(Terminal.YELLOW +"▬"+ Terminal.RESET);
            }
            System.out.print(" ");
            System.err.println(this.player.getCurrentEnergy() + "/" + this.player.getMaxEnergy());
        }
    
    
        public String displayPlayerHealth(){
            return (int )this.player.getCurrentHealth() +" / " + (int) this.player.getMaxHealth();
        }
    
    
        // annonce la mort de l'ennemi
        public void ennemyDying() {
            System.out.println("The ennemy is dead!");
        }
    
        // annonce la mort du joueur
        public void playerDying() {
            System.out.println(this.player.getName() + " is dead!");   
        }
    
    // action quand le joueur n'est pas épuisé
        public void playerHasEnergy(Attack attack) {
            this.ennemy.damage(attack.getDamage() * player.getAttackMultiplier());
            player.exhaust(attack.getEnergyCost());
            System.out.println("You're using " + attack.getName() + "! You lose " + (int) attack.getEnergyCost() + " energy points");
        }
    
        // affiche les règles du jeu
        public void displayGameRules() {
            System.out.println("To fight, type 'a' and press Enter.");
            System.out.println("To exit the game at any moment, type 'q' and press Enter.");
        }
    
        // plus petit rappel des commandes (reste statique sur l'écran pour le joueur)
        public void commandsReminder() {
            System.out.println("Commands : \n \t a - attack \n\t q - exit");
        }
    
        // affiche la fin du niveau
        public void displayEndOfLevel() {
            Display.clearDialogBox();
            System.out.println('\n');
            System.out.println("                            Congrats!       "+'\n');
            System.out.println("      you won your first fight! + \n \t let's see what you can do with your second ennemy...   Good luck! \n\t your currrent enemy level is "+this.getEnnemy().getLevel());
            
            System.out.println(" \n this time your enemy health is "+ (int) this.getEnnemy().getCurrentHealth()+ "\n ... ");
        }
    
        // méthodes de combats
        // liste des attaques et défenses possibles pour le joueur
        public void possibleActions() throws IOException {
            Display.clearDialogBox();
            System.out.println("Possible " + Terminal.RED + "attacks" + Terminal.RESET +  " are : \n \t punch, kick, double kick, supermanpunch. \"");
            System.out.println("Possible " + Terminal.BLUE + "defenses" + Terminal.RESET + " are : \n \t lowblock, highblock\"");
            Display.goToUserInput();
        }
    
        // quand l'utilisateur choisit une action qui n'existe pas
        public void invalidActionChoice() throws IOException {
            Display.clearDialogBox();
            System.out.println("This action is not available.");
            possibleActions();
            Display.goToUserInput();
        }
    
        // méthodes de paramètrages
        // vérification de victoire du joueur
        public boolean playerWon() {
            return !this.player.isDead() && this.ennemy.isDead();
        }
    
        // augmenter le niveau
        public void levelGoingUp() {
            if (playerWon()) {
                System.out.println(">>> Levelling up! <<<");
                this.setNbLevel(nbLevel++);
                System.out.println("                            Congrats!       "+'\n');
                System.out.println("      you won your fight! + \n \t let's see what you can do with your next ennemy...   Good luck! \n\t your currrent enemy level is "+this.ennemy.level );
        
            System.out.println(" \n this time your enemy's health is "+ (int) this.ennemy.currentHealth+ "\n ... ");
            }
        }
    
        public void defends(Character character, Defense defense, Attack attack){
            if(defense.getHeight() == attack.getHeight()){
                character.currentEnergy += 60;
                if(character.currentEnergy > character.maxEnergy) character.currentEnergy = character.maxEnergy;
                System.out.println("The " + attack.getName() + " is blocked! 60 energy is gained");
            } else {
                character.currentEnergy += 30;
                character.currentHealth -= attack.getDamage();
                System.out.println("The block fails! 30 energy is gained, but damage is still done");
            }
        }
       
    
        //Affichage ascii
    
        public  void fightScene() throws IOException{
            Image image=new Image("res/fight.ini", 12);
            image.imageGenerator();
        }
    
        public  void bigFightScene() throws IOException{
            Image image=new Image("res/mouvement.ini", 16);
            image.imageGenerator();
        }
    
        public  void gameOver() throws IOException, InterruptedException{
            Image image=new Image("res/game", 9);
            image.imageGenerator();
            Thread.sleep(700);
            Image image2=new Image("res/over", 8);
            image2.imageGenerator();
            Thread.sleep(1250);
            Display.clearScreen();
    
        }
    
        public void victory() throws IOException, InterruptedException{
            Image image=new Image("res/victory.clj", 8);
            image.imageGenerator();
            Thread.sleep(1250);
            Display.clearScreen();
            Image image2=new Image("res/You", 7);
            image2.imageGenerator();
            Thread.sleep(1000);
            Image image3=new Image("res/won", 7);
            image3.imageGenerator();
        }
    
        public void defeat() throws IOException, InterruptedException{
            Image image=new Image("res/Defeat", 8);
            image.imageGenerator();
            Thread.sleep(1250);
            Display.clearScreen();
            Image image2=new Image("res/You", 7);
            image2.imageGenerator();
            Thread.sleep(1000);
            Image image3=new Image("res/lose", 7);
            image3.imageGenerator();
        }
    
    }