Merge pull request 'EquipHero' (#10) from EquipHero into Dev

Reviewed-on: #10
This commit is contained in:
Grough 2024-09-12 09:50:01 +00:00
commit 748ab4ebb0
52 changed files with 476 additions and 86 deletions

Binary file not shown.

View File

@ -0,0 +1,4 @@
package events;
public class StartEvent extends Event{
}

View File

@ -2,11 +2,19 @@ package heroes;
import heroes.jobs.Job;
import heroes.races.Race;
import items.helmets.Helmet;
import items.shields.Shield;
import items.chests.*;
import items.weapons.Weapon;
public class Hero {
protected String name;
protected Race race;
protected Job job;
protected Helmet helmet;
protected Chest chest;
protected Weapon weapon;
protected Shield shield;
protected int healthBaseLevel;
protected int strengthBaseLevel;
protected int dexterityBaseLevel;
@ -68,6 +76,38 @@ public class Hero {
return dexterityBaseLevel;
}
public Helmet getHelmet() {
return helmet;
}
public void setHelmet(Helmet helmet) {
this.helmet = helmet;
}
public Chest getChest() {
return chest;
}
public void setChest(Chest chest) {
this.chest = chest;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public Shield getShield() {
return shield;
}
public void setShield(Shield shield) {
this.shield = shield;
}
public void setDexterityBaseLevel(int dexterityBaseLevel) {
this.dexterityBaseLevel = dexterityBaseLevel;
}

View File

@ -5,14 +5,19 @@ import heroes.Hero;
public class Dwarf extends Race{
public Dwarf() {
this.setRaceName("Nain");
this.health = 10;
this.strength = 10;
this.defense = 10;
this.dexterity = -15;
this.intelligence = -10;
}
@Override
public void adjustStats(Hero hero) {
hero.setHealth(hero.getHealthBaseLevel() + 10);
hero.setStrength(hero.getStrengthBaseLevel() + 10);
hero.setDefense(hero.getDefenseBaseLevel() + 10);
hero.setDexterity(hero.getDexterityBaseLevel() - 15);
hero.setIntelligence(hero.getIntelligenceBaseLevel() - 10);
hero.setHealth(hero.getHealth() + health);
hero.setStrength(hero.getStrength() + strength);
hero.setDefense(hero.getDefense() + defense);
hero.setDexterity(hero.getDexterity() + dexterity);
hero.setIntelligence(hero.getIntelligence() + intelligence);
}
}

View File

@ -5,14 +5,19 @@ import heroes.Hero;
public class Elf extends Race{
public Elf() {
this.setRaceName("Elfe");
this.health = -5;
this.strength = -5;
this.defense = - 5;
this.dexterity = 10;
this.intelligence = 10;
}
@Override
public void adjustStats(Hero hero) {
hero.setHealth(hero.getHealthBaseLevel() - 5);
hero.setStrength(hero.getStrengthBaseLevel() - 5);
hero.setDefense(hero.getDefenseBaseLevel() - 5);
hero.setDexterity(hero.getDexterityBaseLevel() + 10);
hero.setIntelligence(hero.getIntelligenceBaseLevel() + 10);
hero.setHealth(hero.getHealth() + health);
hero.setStrength(hero.getStrength() + strength);
hero.setDefense(hero.getDefense() + defense);
hero.setDexterity(hero.getDexterity() + dexterity);
hero.setIntelligence(hero.getIntelligence() + intelligence);
}
}

View File

@ -5,14 +5,19 @@ import heroes.Hero;
public class Human extends Race{
public Human() {
this.setRaceName("Human");
this.health = 5;
this.strength = 5;
this.defense = 5;
this.dexterity = 5;
this.intelligence = 5;
}
@Override
public void adjustStats(Hero hero) {
hero.setHealth(hero.getHealthBaseLevel() + 5);
hero.setStrength(hero.getStrengthBaseLevel() + 5);
hero.setDefense(hero.getDefenseBaseLevel() + 5);
hero.setDexterity(hero.getDexterityBaseLevel() + 5);
hero.setIntelligence(hero.getIntelligenceBaseLevel() + 5);
hero.setHealth(hero.getHealth() + health);
hero.setStrength(hero.getStrength() + strength);
hero.setDefense(hero.getDefense() + defense);
hero.setDexterity(hero.getDexterity() + dexterity);
hero.setIntelligence(hero.getIntelligence() + intelligence);
}
}

View File

@ -3,16 +3,22 @@ package heroes.races;
import heroes.Hero;
public class Ork extends Race {
public Ork() {
this.setRaceName("Orc");
this.health = 10;
this.strength = 10;
this.defense = 10;
this.dexterity = -5;
this.intelligence = -10;
}
@Override
public void adjustStats(Hero hero) {
hero.setHealth(hero.getHealthBaseLevel() + 10);
hero.setStrength(hero.getStrengthBaseLevel() + 10);
hero.setDefense(hero.getDefenseBaseLevel() + 10);
hero.setDexterity(hero.getDexterityBaseLevel() - 5);
hero.setIntelligence(hero.getIntelligenceBaseLevel() - 10);
hero.setHealth(hero.getHealth() + health);
hero.setStrength(hero.getStrength() + strength);
hero.setDefense(hero.getDefense() + defense);
hero.setDexterity(hero.getDexterity() + dexterity);
hero.setIntelligence(hero.getIntelligence() + intelligence);
}
}

View File

@ -4,6 +4,11 @@ import heroes.Hero;
public abstract class Race {
public String raceName;
public int health;
public int strength;
public int defense;
public int dexterity;
public int intelligence;
public String getRaceName(){
return raceName;

8
src/items/Equipment.java Normal file
View File

@ -0,0 +1,8 @@
package items;
import heroes.Hero;
public abstract class Equipment {
public String name;
public abstract void equip(Hero hero);
}

View File

@ -1,6 +0,0 @@
package items.armors;
import items.Item;
abstract class Armor extends Item {
}

View File

@ -0,0 +1,6 @@
package items.chests;
import items.Equipment;
public abstract class Chest extends Equipment {
}

View File

@ -0,0 +1,15 @@
package items.chests;
import heroes.Hero;
public class LeatherArmor extends Chest {
public LeatherArmor() {
this.name = "Tunique de Cuir";
}
public void equip(Hero hero) {
hero.setChest(this);
hero.setDefense(hero.getDefense() + 10);
hero.setDexterity(hero.getDexterity() + 5);
}
}

View File

@ -0,0 +1,15 @@
package items.chests;
import heroes.Hero;
public class MailChest extends Chest {
public MailChest() {
this.name = "Cotte de Mailles";
}
public void equip(Hero hero) {
hero.setChest(this);
hero.setDefense(hero.getDefense() + 15);
hero.setDexterity(hero.getDexterity() - 5);
}
}

View File

@ -0,0 +1,16 @@
package items.chests;
import heroes.Hero;
public class PlateArmor extends Chest {
public PlateArmor() {
this.name = "Armure de plaque";
}
@Override
public void equip(Hero hero) {
hero.setChest(this);
hero.setDefense(hero.getDefense() + 20);
hero.setDexterity(hero.getDexterity() - 10);
}
}

View File

@ -0,0 +1,16 @@
package items.chests;
import heroes.Hero;
public class RobeMage extends Chest {
public RobeMage() {
this.name = "Robe de Mage";
}
public void equip(Hero hero) {
hero.setChest(this);
hero.setDefense(hero.getDefense() - 5);
hero.setDexterity(hero.getDexterity() -5);
hero.setIntelligence(hero.getIntelligence() + 15);
}
}

View File

@ -0,0 +1,17 @@
package items.helmets;
import heroes.Hero;
public class Hat extends Helmet {
public Hat() {
this.name = "Hat";
}
@Override
public void equip(Hero hero) {
hero.setHelmet(this);
hero.setDefense(hero.getDefense() + 5);
hero.setIntelligence(hero.getIntelligence() + 5);
hero.setDexterity(hero.getDexterity() - 5);
}
}

View File

@ -0,0 +1,16 @@
package items.helmets;
import heroes.Hero;
public class Helm extends Helmet {
public Helm() {
this.name = "Heaume";
}
public void equip(Hero hero) {
hero.setHelmet(this);
hero.setDefense(hero.getDefense() + 15);
hero.setDexterity(hero.getDexterity() - 5);
hero.setIntelligence(hero.getIntelligence() - 5);
}
}

View File

@ -1,6 +1,6 @@
package items.helmets;
import items.Item;
import items.Equipment;
public abstract class Helmet extends Item {
public abstract class Helmet extends Equipment {
}

View File

@ -0,0 +1,13 @@
package items.helmets;
import heroes.Hero;
public class NoHelmet extends Helmet {
public NoHelmet() {
this.name = "Rien";
}
public void equip(Hero hero) {
hero.setHelmet(this);
}
}

View File

@ -0,0 +1,15 @@
package items.weapons;
import heroes.Hero;
public class Fist extends Weapon{
public Fist() {
this.name = "Poings d'acier";
}
public void equip(Hero hero) {
hero.setWeapon(this);
hero.setStrength(hero.getStrength() + 5);
hero.setDexterity(hero.getDexterity() + 10);
}
}

View File

@ -0,0 +1,7 @@
package items.weapons;
import items.Equipment;
public abstract class Weapon extends Equipment {
}

View File

@ -0,0 +1,6 @@
package items.weapons.axes;
import items.weapons.Weapon;
public abstract class Axe extends Weapon {
}

View File

@ -0,0 +1,16 @@
package items.weapons.axes;
import heroes.Hero;
public class TrainingAxe extends Axe{
public TrainingAxe() {
this.name = "Hache d'apprentissage";
}
public void equip(Hero hero) {
hero.setWeapon(this);
hero.setStrength(hero.getStrength() + 10);
hero.setDexterity(hero.getDexterity() -5);
hero.setIntelligence(hero.getIntelligence() -5);
}
}

View File

@ -0,0 +1,14 @@
package items.weapons.staffs;
import heroes.Hero;
public class ApprenticeStaff extends Staff {
public ApprenticeStaff() {
this.name = "Bâton d'apprenti";
}
public void equip(Hero hero) {
hero.setWeapon(this);
hero.setIntelligence(hero.getIntelligence() + 5);
}
}

View File

@ -0,0 +1,6 @@
package items.weapons.staffs;
import items.weapons.Weapon;
public abstract class Staff extends Weapon {
}

View File

@ -0,0 +1,15 @@
package items.weapons.swords;
import heroes.Hero;
public class Dagger extends Sword{
public Dagger() {
this.name = "Dague";
}
public void equip(Hero hero) {
hero.setWeapon(this);
hero.setStrength(hero.getStrength() + 2);
hero.setDexterity(hero.getDexterity() + 8);
}
}

View File

@ -0,0 +1,6 @@
package items.weapons.swords;
import items.weapons.Weapon;
public abstract class Sword extends Weapon {
}

View File

@ -0,0 +1,15 @@
package items.weapons.swords;
import heroes.Hero;
public class TrainingSword extends Sword{
public TrainingSword() {
this.name = "Épée d'Entraînement";
}
public void equip(Hero hero) {
hero.setWeapon(this);
hero.setStrength(hero.getStrength() + 5);
hero.setDexterity(hero.getDexterity() + 5);
}
}

View File

@ -1,64 +1,59 @@
package systems;
import events.StartEvent;
import heroes.Hero;
import heroes.jobs.*;
import heroes.races.*;
import items.chests.*;
import items.helmets.*;
import items.weapons.axes.TrainingAxe;
import items.weapons.staffs.ApprenticeStaff;
import items.weapons.swords.*;
import java.util.Scanner;
public class Game {
public Scanner scanner = new Scanner(System.in);
private final Scanner scanner = new Scanner(System.in);
public Game() {
System.out.println("Bienvenue dans ce projet fou ! Veux-tu créer ton personnage ?");
System.out.println("1.Oui\n2.Non");
String startGame = scanner.next();
switch (startGame.toLowerCase()) {
case "oui", "yes", "y", "o" -> createCharacter();
case "non", "no", "n" -> {
if (startGame.equalsIgnoreCase("oui") || startGame.equalsIgnoreCase("yes") || startGame.equalsIgnoreCase("y") || startGame.equalsIgnoreCase("o")) {
createCharacter();
} else {
System.out.println("Très bien, à bientôt !");
System.exit(0);
}
}
}
public void createCharacter() {
private void createCharacter() {
System.out.println("Quel est le nom de ton personnage ?");
String name = scanner.next();
System.out.println("Ton personnage s'appelle " + name + " ! Veux-tu le modifier ? \n1.Oui\n2.Non");
String choice = scanner.next();
switch (choice.toLowerCase()) {
case "oui", "yes", "y", "o" -> {
if (choice.equalsIgnoreCase("oui") || choice.equalsIgnoreCase("yes") || choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("o")) {
createCharacter();
}
case "non", "no", "n" -> {
} else {
System.out.println("Très bien, " + name + ".");
Hero hero = new Hero(name);
hero.printStats();
selectJob(hero);
}
}
}
public void selectJob(Hero hero) {
private void selectJob(Hero hero) {
System.out.println("Quelle classe veux-tu choisir ? Un guerrier ? (G), un mage ? (M), un voleur ? (V)");
String job = scanner.next();
switch (job.toLowerCase()) {
case "guerrier", "g" -> {
hero.setJob(new Warrior());
System.out.println("Tu as choisi la classe de guerrier !");
hero.printStats();
}
case "mage", "m" -> {
hero.setJob(new Mage());
System.out.println("Tu as choisi la classe de mage !");
hero.printStats();
}
case "voleur", "v" -> {
hero.setJob(new Rogue());
System.out.println("Tu as choisi la classe de voleur !");
hero.printStats();
case "guerrier", "g" -> hero.setJob(new Warrior());
case "mage", "m" -> hero.setJob(new Mage());
case "voleur", "v" -> hero.setJob(new Rogue());
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
selectJob(hero);
return;
}
}
System.out.println("Voici les caractéristiques de ton personnage :");
@ -66,9 +61,10 @@ public class Game {
System.out.println(hero.getJob().getJobName());
System.out.println("Veux-tu continuer ?\n1.Oui\n2.Non");
String choice = scanner.next();
switch (choice.toLowerCase()) {
case "oui", "yes", "y", "o" -> selectRace(hero);
case "non", "no", "n" -> selectJob(hero);
if (choice.equalsIgnoreCase("oui") || choice.equalsIgnoreCase("yes") || choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("o")) {
selectRace(hero);
} else {
selectJob(hero);
}
}
@ -76,21 +72,14 @@ public class Game {
System.out.println("Veux-tu jouer un nain ? (N), un orc ? (O), un elfe (E) ou un humain (H) ?");
String choice = scanner.next();
switch (choice.toLowerCase()) {
case "nain", "n" -> {
hero.setRace(new Dwarf());
System.out.println("Tu as choisi d'être un nain !");
}
case "orc", "o" -> {
hero.setRace(new Ork());
System.out.println("Tu as choisi d'être un orc !");
}
case "elfe", "e" -> {
hero.setRace(new Elf());
System.out.println("Tu as choisi d'être un elfe !");
}
case "humain", "h" -> {
hero.setRace(new Human());
System.out.println("Tu as choisi d'être un humain !");
case "nain", "n" -> hero.setRace(new Dwarf());
case "orc", "o" -> hero.setRace(new Ork());
case "elfe", "e" -> hero.setRace(new Elf());
case "humain", "h" -> hero.setRace(new Human());
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
selectRace(hero);
return;
}
}
System.out.println("Voici les caractéristiques de ton personnage :");
@ -98,12 +87,127 @@ public class Game {
System.out.println(hero.getRace().getRaceName() + "\n" + hero.getJob().getJobName());
System.out.println("Veux-tu continuer ?\n1.Oui\n2.Non");
String choice2 = scanner.next();
switch (choice2.toLowerCase()) {
case "oui", "yes", "y", "o" -> {
System.out.println("Très bien, tu es prêt à commencer l'aventure !");
System.exit(0);
if (choice2.equalsIgnoreCase("oui") || choice2.equalsIgnoreCase("yes") || choice2.equalsIgnoreCase("y") || choice2.equalsIgnoreCase("o")) {
System.out.println("Très bien, Et maintenant, ton équipement.");
equipHelmet(hero);
} else {
selectRace(hero);
}
case "non", "no", "n" -> selectRace(hero);
}
private void equipHelmet(Hero hero) {
System.out.println("Veux-tu équiper un casque ?\n1.Oui\n2.Non");
String choice = scanner.next();
if (choice.equalsIgnoreCase("oui") || choice.equalsIgnoreCase("yes") || choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("o")) {
System.out.println("D'accord, lequel ? Un Heaume ? (H), un Chapeau ? (C) ?, ou rien ?");
String helmet = scanner.next();
switch (helmet.toLowerCase()) {
case "heaume", "h" -> hero.setHelmet(new Helm());
case "chapeau", "c" -> hero.setHelmet(new Hat());
case "none", "rien", "r", "n" -> System.out.println("Très bien, tu n'as pas équipé de casque.");
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
equipHelmet(hero);
return;
}
}
if (hero.getHelmet() != null) hero.getHelmet().equip(hero);
} else {
System.out.println("Très bien, tu n'as pas équipé de casque.");
}
hero.printStats();
System.out.println(hero.getRace().getRaceName() + "\n" + hero.getJob().getJobName());
System.out.println("Veux-tu continuer ?\n1.Oui\n2.Non");
String choice2 = scanner.next();
if (choice2.equalsIgnoreCase("oui") || choice2.equalsIgnoreCase("yes") || choice2.equalsIgnoreCase("y") || choice2.equalsIgnoreCase("o")) {
equipArmor(hero);
} else {
equipHelmet(hero);
}
}
private void equipArmor(Hero hero) {
System.out.println("Veux-tu t'équiper d'une armure ?\n1.Oui\n2.Non");
String choice = scanner.next();
if (choice.equalsIgnoreCase("oui") || choice.equalsIgnoreCase("yes") || choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("o")) {
System.out.println("D'accord, lequel ? Une armure en plaque (P) ? Une cotte de mail (M) ? Une tunique en cuir (T) ? Une robe de mage (R) ?");
String armor = scanner.next();
switch (armor.toLowerCase()) {
case "plaque", "plate", "p", "armor", "armure" -> hero.setChest(new PlateArmor());
case "tunique", "tunic", "t", "leather", "cuir" -> hero.setChest(new LeatherArmor());
case "mail", "mailles", "m", "cotte", "chest" -> hero.setChest(new MailChest());
case "robe", "mage", "r" -> hero.setChest(new RobeMage());
case "none", "rien" -> {
System.out.println("Tu veux VRAIMENT y aller à poil ?");
String validate = scanner.next();
if (validate.equalsIgnoreCase("oui") || validate.equalsIgnoreCase("yes") || validate.equalsIgnoreCase("y") || validate.equalsIgnoreCase("o")) {
System.out.println("Ah bah d'accord le nudiste ...");
} else {
equipArmor(hero);
}
return;
}
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
equipArmor(hero);
return;
}
}
if (hero.getChest() != null) hero.getChest().equip(hero);
} else {
System.out.println("Très bien, tu n'as pas équipé d'armure.");
}
hero.printStats();
System.out.println(hero.getRace().getRaceName() + "\n" + hero.getJob().getJobName());
System.out.println("Veux-tu continuer ?\n1.Oui\n2.Non");
String choice2 = scanner.next();
if (choice2.equalsIgnoreCase("oui") || choice2.equalsIgnoreCase("yes") || choice2.equalsIgnoreCase("y") || choice2.equalsIgnoreCase("o")) {
equipWeapon(hero);
} else {
equipArmor(hero);
}
}
private void equipWeapon(Hero hero) {
System.out.println("Veux-tu t'équiper d'une arme ?\n1.Oui\n2.Non");
String choice = scanner.next();
if (choice.equalsIgnoreCase("oui") || choice.equalsIgnoreCase("yes") || choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("o")) {
System.out.println("D'accord, lequel ? Une épée (E) ? Un bâton (B) ? Une hache (H) ? Une dague (D) ? Ou rien ?");
String weapon = scanner.next();
switch (weapon.toLowerCase()) {
case "sword", "epee", "e" -> hero.setWeapon(new TrainingSword());
case "staff", "baton", "b" -> hero.setWeapon(new ApprenticeStaff());
case "axe", "hache", "h" -> hero.setWeapon(new TrainingAxe());
case "dagger", "dague", "d" -> hero.setWeapon(new Dagger());
case "none", "rien" -> {
System.out.println("Tu veux VRAIMENT y aller à mains nues ?");
String validate = scanner.next();
if (validate.equalsIgnoreCase("oui") || validate.equalsIgnoreCase("yes") || validate.equalsIgnoreCase("y") || validate.equalsIgnoreCase("o")) {
System.out.println("Rien de tel que ses poings pour montrer sa puissance.");
} else {
equipWeapon(hero);
}
return;
}
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
equipWeapon(hero);
return;
}
}
if (hero.getWeapon() != null) hero.getWeapon().equip(hero);
} else {
System.out.println("Très bien, tu n'as pas équipé d'arme.");
}
hero.printStats();
System.out.println(hero.getRace().getRaceName() + "\n" + hero.getJob().getJobName());
System.out.println("Veux-tu continuer ?\n1.Oui\n2.Non");
String choice2 = scanner.next();
if (choice2.equalsIgnoreCase("oui") || choice2.equalsIgnoreCase("yes") || choice2.equalsIgnoreCase("y") || choice2.equalsIgnoreCase("o")) {
System.out.println("Très bien, tu es prêt à commencer l'aventure !");
new StartEvent();
} else {
equipWeapon(hero);
}
}
}