Commit aa7b1c38 authored by Guillaume Dewisme's avatar Guillaume Dewisme

refactor

parent c7b2d137
package org.example;
import org.example.SpecialAbility;
import org.example.DoubleAttack;
import org.example.Character;
import org.example.Hero;
import java.io.FileWriter;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;
public class BeatThemAllGame {
// Je l'ai fait à la va vite donc très probablement que ca ne fonctionne pas parfaitement (j'ai pas testé)
public static class Logger {
private static Logger instance;
private FileWriter writer;
private Logger() {
try {
writer = new FileWriter("game_log.txt", true);
} catch (IOException e) {
System.out.println("Erreur lors de l'initialisation du logger : " + e.getMessage());
}
}
public static Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
public void log(String message) {
try {
String timestamp = "[" + LocalDateTime.now() + "] ";
writer.write(timestamp + message + "\n");
writer.flush();
} catch (IOException e) {
System.out.println("Erreur lors de l'écriture dans le fichier de log : " + e.getMessage());
}
}
}
public static class HalveEnemyHP implements SpecialAbility {
@Override
public void activate(Character user, Character target) {
......@@ -69,13 +30,6 @@ public class BeatThemAllGame {
}
}
// Objets
public interface Item {
void applyEffect(Hero hero);
String getName();
}
public static class HealthPotion implements Item {
@Override
public void applyEffect(Hero hero) {
......@@ -104,48 +58,6 @@ public class BeatThemAllGame {
}
}
// gére tout le jeu
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
displayTitle();
Hero hero = chooseHero(scanner);
System.out.println();
System.out.println("Votre aventure commence !");
Logger.getInstance().log("Début de l'aventure de " + hero.name);
boolean gameRunning = true;
while (gameRunning && hero.isAlive()) {
Enemy enemy = generateRandomEnemy();
System.out.println("\nUn " + enemy.name + " apparaît !");
Logger.getInstance().log(hero.name + " rencontre un " + enemy.name);
battle(scanner, hero, enemy);
if (!hero.isAlive()) {
displayGameOver();
Logger.getInstance().log(hero.name + " est mort");
break;
}
hero.resetSpecialAbility();
hero.gainExperience(50);
// Chance de trouver un objet après le combat
if (new Random().nextInt(100) < 50) {
Item foundItem = getRandomItem();
System.out.println("Vous trouvez un objet sur l'ennemi !");
hero.addItem(foundItem);
}
// Demander au joueur s'il veut continuer
System.out.print("\nVoulez-vous continuer ? (oui/non) : ");
String choice = scanner.next();
if (!choice.equalsIgnoreCase("oui")) {
gameRunning = false;
System.out.println("Merci d'avoir joué !");
Logger.getInstance().log(hero.name + " a quitté le jeu");
}
}
}
// choix du héro
public static Hero chooseHero(Scanner scanner) {
......
package org.example;
import org.example.BeatThemAllGame.Logger;
public class Enemy extends Character {
public Enemy(String name, int maxHP, int attackPower, int defense, SpecialAbility specialAbility) {
......
......@@ -4,8 +4,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.example.BeatThemAllGame.Item;
import org.example.BeatThemAllGame.Logger;
// Classe pour le héros
public class Hero extends Character {
......
package org.example;
public interface Item {
void applyEffect(Hero hero);
String getName();
}
package org.example;
import java.io.FileWriter;
import java.io.IOException;
import java.time.LocalDateTime;
public class Logger {
private static Logger instance;
private FileWriter writer;
private Logger() {
try {
writer = new FileWriter("game_log.txt", true);
} catch (IOException e) {
System.out.println("Erreur lors de l'initialisation du logger : " + e.getMessage());
}
}
public static Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
public void log(String message) {
try {
String timestamp = "[" + LocalDateTime.now() + "] ";
writer.write(timestamp + message + "\n");
writer.flush();
} catch (IOException e) {
System.out.println("Erreur lors de l'écriture dans le fichier de log : " + e.getMessage());
}
}
}
package org.example;
import java.util.Random;
import java.util.Scanner;
import static org.example.BeatThemAllGame.battle;
import static org.example.BeatThemAllGame.chooseHero;
import static org.example.BeatThemAllGame.displayGameOver;
import static org.example.BeatThemAllGame.displayTitle;
import static org.example.BeatThemAllGame.generateRandomEnemy;
import static org.example.BeatThemAllGame.getRandomItem;
public class Main{
public void main(String[] args) {
Scanner scanner = new Scanner(System.in);
displayTitle();
Hero hero = chooseHero(scanner);
System.out.println();
System.out.println("Votre aventure commence !");
Logger.getInstance().log("Début de l'aventure de " + hero.name);
boolean gameRunning = true;
while (gameRunning && hero.isAlive()) {
Enemy enemy = generateRandomEnemy();
System.out.println("\nUn " + enemy.name + " apparaît !");
Logger.getInstance().log(hero.name + " rencontre un " + enemy.name);
battle(scanner, hero, enemy);
if (!hero.isAlive()) {
displayGameOver();
Logger.getInstance().log(hero.name + " est mort");
break;
}
hero.resetSpecialAbility();
hero.gainExperience(50);
// Chance de trouver un objet après le combat
if (new Random().nextInt(100) < 50) {
Item foundItem = getRandomItem();
System.out.println("Vous trouvez un objet sur l'ennemi !");
hero.addItem(foundItem);
}
// Demander au joueur s'il veut continuer
System.out.print("\nVoulez-vous continuer ? (oui/non) : ");
String choice = scanner.next();
if (!choice.equalsIgnoreCase("oui")) {
gameRunning = false;
System.out.println("Merci d'avoir joué !");
Logger.getInstance().log(hero.name + " a quitté le jeu");
}
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment