Armor create and the choice of the armor modify the character's stat

This commit is contained in:
Grough 2024-09-11 14:48:03 +02:00
parent ff6af4948d
commit cf1a8e9cc3
28 changed files with 318 additions and 13 deletions

Binary file not shown.

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

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,6 @@
package items.weapons;
import items.Equipment;
public abstract class Weapon extends Equipment {
}

View File

@ -3,6 +3,12 @@ package systems;
import heroes.Hero;
import heroes.jobs.*;
import heroes.races.*;
import items.chests.LeatherArmor;
import items.chests.MailChest;
import items.chests.PlateArmor;
import items.chests.RobeMage;
import items.helmets.Hat;
import items.helmets.Helm;
import java.util.Scanner;
@ -48,17 +54,14 @@ public class Game {
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();
}
}
System.out.println("Voici les caractéristiques de ton personnage :");
@ -100,10 +103,150 @@ public class Game {
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);
System.out.println("Très bien, Et maintenant, ton équipement.");
equipHelmet(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();
switch (choice.toLowerCase()) {
case "oui", "yes", "y", "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());
hero.getHelmet().equip(hero);
System.out.println("Tu as équipé un heaume !");
}
case "chapeau", "c" -> {
hero.setHelmet(new Hat());
hero.getHelmet().equip(hero);
System.out.println("Tu as équipé un chapeau !");
}
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);
}
}
}
case "non", "no", "n" -> {
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();
switch (choice2.toLowerCase()) {
case "oui", "yes", "y", "o" -> equipArmor(hero);
case "non", "no", "n" -> 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();
switch (choice.toLowerCase()) {
case "oui", "yes", "y", "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());
hero.getChest().equip(hero);
System.out.println("Tu t'es équipé d'une armure en plaque !");
}
case "tunique","tunic", "t", "leather", "cuir" -> {
hero.setChest(new LeatherArmor());
hero.getChest().equip(hero);
System.out.println("Tu t'es équipé d'une tunique de cuir !");
}
case "mail","mailles", "m", "cotte", "chest" -> {
hero.setChest(new MailChest());
hero.getChest().equip(hero);
System.out.println("Tu t'es équipé d'une tunique de cuir !");
}
case "robe","mage", "r" -> {
hero.setChest(new RobeMage());
hero.getChest().equip(hero);
System.out.println("Tu t'es équipé d'une tunique de cuir !");
}
case "none", "rien" -> {
System.out.println("Tu veux VRAIMENT y aller à poil ?");
String validate = scanner.next();
switch (validate.toLowerCase()) {
case "oui", "yes", "y", "o" -> System.out.println("Ah bah d'accord le nudiste ...");
case "non", "no", "n" -> equipArmor(hero);
}
}
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
equipHelmet(hero);
}
}
}
case "non", "no", "n" -> 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();
switch (choice2.toLowerCase()) {
case "oui", "yes", "y", "o" -> equipWeapon(hero);
case "non", "no", "n" -> 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();
switch (choice.toLowerCase()) {
case "oui", "yes", "y", "o" -> {
System.out.println("D'accord, lequel ? Une épée (E) ? Un bâton (B) ? Un arc (A) ? Une dague (D) ?");
String weapon = scanner.next();
switch (weapon.toLowerCase()) {
case "sword", "epee", "e" -> {
hero.setWeapon(new Sword());
hero.getWeapon().equip(hero);
System.out.println("Tu t'es équipé d'une épée !");
}
case "staff", "baton", "b" -> {
hero.setWeapon(new Staff());
hero.getWeapon().equip(hero);
System.out.println("Tu t'es équipé d'un bâton !");
}
case "bow", "arc", "a" -> {
hero.setWeapon(new Bow());
hero.getWeapon().equip(hero);
System.out.println("Tu t'es équipé d'un arc !");
}
case "dagger", "dague", "d" -> {
hero.setWeapon(new Dagger());
hero.getWeapon().equip(hero);
System.out.println("Tu t'es équipé d'une dague !");
}
case "none", "rien" -> {
System.out.println("Tu veux VRAIMENT y aller à mains nues ?");
String validate = scanner.next();
switch (validate.toLowerCase()) {
case "oui", "yes", "y", "o" -> System.out.println("Ah bah d'accord le nudiste ...");
case "non", "no", "n" -> equipWeapon(hero);
}
}
default -> {
System.out.println("Je n'ai pas compris ta réponse.");
equipWeapon(hero);
}
}
}
case "non", "no", "n" -> 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");
}
}