From 9a0f590bef0f9a45101a7c1bf18d069288444ad9 Mon Sep 17 00:00:00 2001 From: joshashtondev Date: Tue, 4 Aug 2026 06:47:48 -0600 Subject: [PATCH] init commit --- final-project/src/dnd/Background.java | 103 +++++++++++++++++++++ final-project/src/dnd/Character.java | 107 ++++++++++++++++++++++ final-project/src/dnd/CharacterStats.java | 82 +++++++++++++++++ final-project/src/dnd/Charisma.java | 55 +++++++++++ final-project/src/dnd/ClassTemplate.java | 37 ++++++++ final-project/src/dnd/Cleric.java | 91 ++++++++++++++++++ final-project/src/dnd/Constitution.java | 55 +++++++++++ final-project/src/dnd/Dexterity.java | 55 +++++++++++ final-project/src/dnd/Dragonborn.java | 72 +++++++++++++++ final-project/src/dnd/Fighter.java | 91 ++++++++++++++++++ final-project/src/dnd/Human.java | 75 +++++++++++++++ final-project/src/dnd/Intelligence.java | 55 +++++++++++ final-project/src/dnd/Race.java | 50 ++++++++++ final-project/src/dnd/Skills.java | 84 +++++++++++++++++ final-project/src/dnd/Stats.java | 56 +++++++++++ final-project/src/dnd/Strength.java | 67 ++++++++++++++ final-project/src/dnd/Wisdom.java | 55 +++++++++++ final-project/src/dnd/Wizard.java | 91 ++++++++++++++++++ final-project/src/dnd/dndTestClient.java | 24 +++++ 19 files changed, 1305 insertions(+) create mode 100644 final-project/src/dnd/Background.java create mode 100644 final-project/src/dnd/Character.java create mode 100644 final-project/src/dnd/CharacterStats.java create mode 100644 final-project/src/dnd/Charisma.java create mode 100644 final-project/src/dnd/ClassTemplate.java create mode 100644 final-project/src/dnd/Cleric.java create mode 100644 final-project/src/dnd/Constitution.java create mode 100644 final-project/src/dnd/Dexterity.java create mode 100644 final-project/src/dnd/Dragonborn.java create mode 100644 final-project/src/dnd/Fighter.java create mode 100644 final-project/src/dnd/Human.java create mode 100644 final-project/src/dnd/Intelligence.java create mode 100644 final-project/src/dnd/Race.java create mode 100644 final-project/src/dnd/Skills.java create mode 100644 final-project/src/dnd/Stats.java create mode 100644 final-project/src/dnd/Strength.java create mode 100644 final-project/src/dnd/Wisdom.java create mode 100644 final-project/src/dnd/Wizard.java create mode 100644 final-project/src/dnd/dndTestClient.java diff --git a/final-project/src/dnd/Background.java b/final-project/src/dnd/Background.java new file mode 100644 index 0000000..a21c657 --- /dev/null +++ b/final-project/src/dnd/Background.java @@ -0,0 +1,103 @@ +package dnd; + +import java.util.Arrays; + +public class Background { + + private String name; + private boolean[] proficientStatus; + private String[] skills; + private String feature; + private String skillProficiencies; + int backgroundIndex; + + /** + * @param name + * @param skillProficiences + * @param feature + */ + public Background(String name, boolean[] proficientStatus, String[] skills, String feature) { + this.name = name; + this.proficientStatus = proficientStatus; + this.skills = skills; + this.feature = feature; + skillProficiencies = null; + } + + public void setAcolyte(){ + name = "Acolyte"; + proficientStatus[5] = true; + proficientStatus[14] = true; + skillProficiencies = skills[5] + ", " + skills[14]; + feature = "Shelter of the Faithful"+ "\nAs an acolyte, you command the respect of those who share your faith, and you can perform the religious ceremonies of your deity. You and your adventuring companions can expect to receive free healing and care at a temple, shrine, or other established presence of your faith, though you must provide any material components needed for spells. Those who share your religion will support you (but only you) at a modest lifestyle." + + "\nYou might also have ties to a specific temple dedicated to your chosen deity or pantheon, and you have a residence there. This could be the temple where you used to serve, if you remain on good terms with it, or a temple where you have found a new home. While near your temple, you can call upon the priests for assistance, provided the assistance you ask for is not hazardous and you remain in good standing with your temple."; + } + + public void setCharlatan(){ + name = "Charlatan"; + proficientStatus[4] = true; + proficientStatus[15] = true; + skillProficiencies = skills[4] + ", " + skills[15]; + feature = "False Identity" + "\nYou have created a second identity that includes documentation, established acquaintances, and disguises that allow you to assume that persona. Additionally, you can forge documents including official papers and personal letters, as long as you have seen an example of the kind of document or the handwriting you are trying to copy."; + } + + + public void setCriminal(){ + name = "Criminal"; + proficientStatus[4] = true; + proficientStatus[16] = true; + skillProficiencies = skills[4] + ", " + skills[16]; + feature = "Feature: Criminal Contact" + "\nYou have a reliable and trustworthy contact who acts as your liaison to a network of other criminals. You know how to get messages to and from your contact, even over great distances; specifically, you know the local messengers, corrupt caravan masters, and seedy sailors who can deliver messages for you."; + } + + public void setSpy(){ + name = "Spy"; + proficientStatus[4] = true; + proficientStatus[16] = true; + skillProficiencies = skills[4] + ", " + skills[16]; + feature = "Criminal Contact" + "\nYou have a reliable and trustworthy contact who acts as your liaison to a network of other criminals. You know how to get messages to and from your contact, even over great distances; specifically, you know the local messengers, corrupt caravan masters, and seedy sailors who can deliver messages for you."; + } + + public void setEntertainer(){ + name = "Entertainer"; + proficientStatus[0] = true; + proficientStatus[12] = true; + skillProficiencies = skills[0] + ", " + skills[12]; + feature = "By Popular Demand" + "\nYou can always find a place to perform, usually in an inn or tavern but possibly with a circus, at a theater, or even in a noble�s court. At such a place, you receive free lodging and food of a modest or comfortable standard (depending on the quality of the establishment), as long as you perform each night. In addition, your performance makes you something of a local figure. When strangers recognize you in a town where you have performed, they typically take a liking to you."; + } + + /** + * @return the name + */ + public String getName() { + return name; + } + /** + * @return the skillProficiencies + */ + public String getskillProficiences() { + return skillProficiencies; + } + /** + * @return the feature + */ + public String getDescription() { + return feature; + } + + /** + * @return the proficientStatus + */ + public boolean[] getProficientStatus() { + return proficientStatus; + } + + @Override + public String toString() { + return "Background: " + name + "\nSkill Proficiencies: " + skillProficiencies + "\nFeature: " + + feature; + } + + + +} diff --git a/final-project/src/dnd/Character.java b/final-project/src/dnd/Character.java new file mode 100644 index 0000000..e8051ce --- /dev/null +++ b/final-project/src/dnd/Character.java @@ -0,0 +1,107 @@ +package dnd; + +public class Character { + private String name; + private int age; + private int heightFeet; + private int heightInch; + private int weight; + private String eye; + private String hair; + private Race race; + private CharacterStats stats; + + /** + * @param name + * @param age + * @param heightFeet + * @param heightInch + * @param weigth + * @param eye + * @param hair + */ + public Character(String name, int age, + int heightFeet, int heightInch, + int weight, String eye, String hair, + Race race, CharacterStats stats) { + this.name = name; + this.age = age; + this.heightFeet = heightFeet; + this.heightInch = heightInch; + this.weight = weight; + this.eye = eye; + this.hair = hair; + this.race = race; + this.stats = stats; + } + /** + * Default constructor + */ + public Character() { + this.name = "null"; + this.age = 0; + this.heightFeet = 0; + this.heightInch = 0; + this.weight = 0; + this.eye = "null"; + this.hair = "null"; + + } + /** + * @return the name + */ + public String getName() { + return name; + } + /** + * @return the age + */ + public int getAge() { + return age; + } + /** + * @return the heightFeet + */ + public int getHeightFeet() { + return heightFeet; + } + /** + * @return the heightInch + */ + public int getHeightInch() { + return heightInch; + } + /** + * @return the weigth + */ + public int getWeight() { + return weight; + } + /** + * @return the eye + */ + public String getEye() { + return eye; + } + /** + * @return the hair + */ + public String getHair() { + return hair; + } + + public CharacterStats getStats() { + + return stats; + + } + + @Override + public String toString() { + return "name: " + name + " | age: " + age + " | height: " + + heightFeet + "\'" + heightInch + "\" | weight: " + + weight + " | eye: " + eye + " | hair: " + hair + + " | race: " + race.toString() + " | stats: " + stats.toString(); + } + +} diff --git a/final-project/src/dnd/CharacterStats.java b/final-project/src/dnd/CharacterStats.java new file mode 100644 index 0000000..b91a0f0 --- /dev/null +++ b/final-project/src/dnd/CharacterStats.java @@ -0,0 +1,82 @@ +package dnd; +public class CharacterStats { + + private Stats[] stats; + + public CharacterStats() { + + stats = new Stats[]{}; + + } + +// TODO: Need to implement constructor, validates all proposed ability scores and creates new objects containing corresponding values. + public CharacterStats(int str, int dex, int con, int intel, int wis, int cha) { + + this.stats = new Stats[]{ + + new Strength(str), + new Dexterity(dex), + new Constitution(con), + new Intelligence(intel), + new Wisdom(wis), + new Charisma(cha) + + }; + + } + + public CharacterStats(Strength str, Dexterity dex, Constitution con, Intelligence intel, Wisdom wis, Charisma cha) { + + this.stats = new Stats[]{str, dex, con, intel, wis, cha}; + + } + +// TODO: Need to implement ability score validation. + public boolean validateAbilityScore(int abilityScore) { + + return false; + + } + + public Stats[] getStats() { + + return stats; + + } + + /** + * + * Allows for access to a particular stat. + * + * @param int stat + * @return a specific stat + * + */ + public Stats getStats(int stat) { + + return stats[stat]; + + } + + public void increaseStat(int targetStat) { + + stats[targetStat].increaseScore(); + + } + + @Override + public String toString() { + + String statsString = ""; + + for(int i = 0; i < stats.length; i++) { + + statsString = statsString.concat(stats[i].getClass().getSimpleName() + ": " + stats[i].getScore() + " | "); + + } + + return statsString; + + } + +} diff --git a/final-project/src/dnd/Charisma.java b/final-project/src/dnd/Charisma.java new file mode 100644 index 0000000..26eed1f --- /dev/null +++ b/final-project/src/dnd/Charisma.java @@ -0,0 +1,55 @@ +package dnd; + +public class Charisma extends Stats { + + private int abilityScore; + private int abilityScoreModifier; + + public Charisma(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + +// TODO: Need description. + public String getDescription() { + + return "Confidence, eloquence, and leadership."; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/ClassTemplate.java b/final-project/src/dnd/ClassTemplate.java new file mode 100644 index 0000000..852bcb3 --- /dev/null +++ b/final-project/src/dnd/ClassTemplate.java @@ -0,0 +1,37 @@ +package dnd; + +public interface ClassTemplate { + + String getDescription(); + + String[] getProgression(); + + String[] getClassFeatures(); + + String getHitDie(); + + int getHPatLv1(); + + int getHPpastLv1(); + + String[] getArmorProf(); + + String[] getWeaponProf(); + + String[] getToolProf(); + + String[] getSavingThrows(); + +// TODO: Need to refresh on how saving throws work and how the character's class may impact a saving throw. + + String[] availableSkills(); + + String[] startingEquipChoices(); + + boolean advantageCheck(Stats abilityScore); + + boolean disadvantageCheck(Stats abilityScore); + +// TODO: Spells and shit. + +} diff --git a/final-project/src/dnd/Cleric.java b/final-project/src/dnd/Cleric.java new file mode 100644 index 0000000..b20f68b --- /dev/null +++ b/final-project/src/dnd/Cleric.java @@ -0,0 +1,91 @@ +package dnd; + +public class Cleric implements ClassTemplate { + + private int HP; + + private int level; + +// TODO: This should be the type of die. + private int hitDie; + + public Cleric(Stats[] stats, int level) { + + + + } + +// TODO: Need to figure out how to contain class progression information. Potentially a double String array, each row equals a level, each column a different thing. Should class features be a separate class, ie. BarbFeatures, BardFeatures, etc? + + public String getDescription() { + // TODO Auto-generated method stub + return null; + } + + public String[] getProgression() { + // TODO Auto-generated method stub + return null; + } + + public String[] getClassFeatures() { + // TODO Auto-generated method stub + return null; + } + + public String getHitDie() { + // TODO Auto-generated method stub + return null; + } + + public int getHPatLv1() { + // TODO Auto-generated method stub + return 0; + } + + public int getHPpastLv1() { + // TODO Auto-generated method stub + return 0; + } + + public String[] getArmorProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getWeaponProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getToolProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] availableSkills() { + // TODO Auto-generated method stub + return null; + } + + public String[] startingEquipChoices() { + // TODO Auto-generated method stub + return null; + } + + public boolean advantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + public boolean disadvantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String[] getSavingThrows() { + // TODO Auto-generated method stub + return null; + } + +} \ No newline at end of file diff --git a/final-project/src/dnd/Constitution.java b/final-project/src/dnd/Constitution.java new file mode 100644 index 0000000..3b89d49 --- /dev/null +++ b/final-project/src/dnd/Constitution.java @@ -0,0 +1,55 @@ +package dnd; + +public class Constitution extends Stats { + + private int abilityScore; + private int abilityScoreModifier; + + public Constitution(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + +// TODO: Need description. + public String getDescription() { + + return "Health, stamina, vital force."; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/Dexterity.java b/final-project/src/dnd/Dexterity.java new file mode 100644 index 0000000..8f7a6e1 --- /dev/null +++ b/final-project/src/dnd/Dexterity.java @@ -0,0 +1,55 @@ +package dnd; + +public class Dexterity extends Stats { + + private int abilityScore; + private int abilityScoreModifier; + + public Dexterity(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + +// TODO: Need description. + public String getDescription() { + + return ""; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/Dragonborn.java b/final-project/src/dnd/Dragonborn.java new file mode 100644 index 0000000..4496b61 --- /dev/null +++ b/final-project/src/dnd/Dragonborn.java @@ -0,0 +1,72 @@ +package dnd; + +public class Dragonborn implements Race{ + private String[] traits; + private final int speed = 30; + private final int maxAge = 80; + private String[] skills; + private String[] languages; + private String[] proficiencies; + + public Dragonborn() { + + this.languages = new String[] {"Common", "Draconic"}; + this.skills = new String[] {}; + } + + @Override + public String getRace() { + // TODO Auto-generated method stub + return this.getClass().getSimpleName(); + } + + @Override + public int maxAge() { + // TODO Auto-generated method stub + return maxAge; + } + + @Override + public int getSpeed() { + // TODO Auto-generated method stub + return speed; + } + + @Override + public String[] getTraits() { + // TODO Auto-generated method stub + return traits; + + } + + @Override + public String[] getSkills() { + // TODO Auto-generated method stub + return skills; + } + + @Override + public String[] getLanguages() { + // TODO Auto-generated method stub + return languages; + } + + @Override + public String[] getProficiencies() { + // TODO Auto-generated method stub + return proficiencies; + } + + @Override + public int[] getASI() { + // TODO Auto-generated method stub + return new int[]{0,0,5}; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return this.getClass().getSimpleName(); + } + +} diff --git a/final-project/src/dnd/Fighter.java b/final-project/src/dnd/Fighter.java new file mode 100644 index 0000000..bca8ab5 --- /dev/null +++ b/final-project/src/dnd/Fighter.java @@ -0,0 +1,91 @@ +package dnd; + +public class Fighter implements ClassTemplate { + + private int HP; + + private int level; + +// TODO: This should be the type of die. + private int hitDie; + + public Fighter(Stats[] stats, int level) { + + + + } + +// TODO: Need to figure out how to contain class progression information. Potentially a double String array, each row equals a level, each column a different thing. Should class features be a separate class, ie. BarbFeatures, BardFeatures, etc? + + public String getDescription() { + // TODO Auto-generated method stub + return null; + } + + public String[] getProgression() { + // TODO Auto-generated method stub + return null; + } + + public String[] getClassFeatures() { + // TODO Auto-generated method stub + return null; + } + + public String getHitDie() { + // TODO Auto-generated method stub + return null; + } + + public int getHPatLv1() { + // TODO Auto-generated method stub + return 0; + } + + public int getHPpastLv1() { + // TODO Auto-generated method stub + return 0; + } + + public String[] getArmorProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getWeaponProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getToolProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] availableSkills() { + // TODO Auto-generated method stub + return null; + } + + public String[] startingEquipChoices() { + // TODO Auto-generated method stub + return null; + } + + public boolean advantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + public boolean disadvantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String[] getSavingThrows() { + // TODO Auto-generated method stub + return null; + } + +} \ No newline at end of file diff --git a/final-project/src/dnd/Human.java b/final-project/src/dnd/Human.java new file mode 100644 index 0000000..8ce4778 --- /dev/null +++ b/final-project/src/dnd/Human.java @@ -0,0 +1,75 @@ +package dnd; + +public class Human implements Race { + +// TODO: Need to implement race sizes. + private String[] traits; + private final int speed = 30; + private final int maxAge = 80; + private String[] skills; + private String[] languages; + private String[] proficiencies; + + public Human(String chosenLanguage) { + + this.languages = new String[] {"Common", chosenLanguage}; + this.skills = new String[] {}; + + } + + @Override + public String getRace() { + // TODO Auto-generated method stub + return this.getClass().getSimpleName(); + } + + @Override + public int maxAge() { + // TODO Auto-generated method stub + return maxAge; + } + + @Override + public int getSpeed() { + // TODO Auto-generated method stub + return speed; + } + + @Override + public String[] getTraits() { + // TODO Auto-generated method stub + return traits; + + } + + @Override + public String[] getSkills() { + // TODO Auto-generated method stub + return skills; + } + + @Override + public String[] getLanguages() { + // TODO Auto-generated method stub + return languages; + } + + @Override + public String[] getProficiencies() { + // TODO Auto-generated method stub + return proficiencies; + } + + @Override + public int[] getASI() { + // TODO Auto-generated method stub + return new int[]{0, 1, 2, 3, 4, 5}; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return this.getClass().getSimpleName(); + } + +} diff --git a/final-project/src/dnd/Intelligence.java b/final-project/src/dnd/Intelligence.java new file mode 100644 index 0000000..051ed92 --- /dev/null +++ b/final-project/src/dnd/Intelligence.java @@ -0,0 +1,55 @@ +package dnd; + +public class Intelligence extends Stats{ + + private int abilityScore; + private int abilityScoreModifier; + + public Intelligence(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + +// TODO: Need description. + public String getDescription() { + + return ""; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/Race.java b/final-project/src/dnd/Race.java new file mode 100644 index 0000000..218e40b --- /dev/null +++ b/final-project/src/dnd/Race.java @@ -0,0 +1,50 @@ +package dnd; + +import java.util.ArrayList; + +public interface Race { + + String getRace(); + + int maxAge(); + + int getSpeed(); + + String[] getTraits(); + + String[] getSkills(); + + String[] getLanguages(); + + String[] getProficiencies(); + + int[] getASI(); + +// private ArrayList traits; +// private ArrayList skills; +// private ArrayList laugnuage; +// //private Subrace subrase; +// private ArrayList proficiencies; +// /** +// * @param raceName +// * @param ageRange +// * @param speed +// * @param traits +// * @param skills +// * @param laugnuage +// * @param proficiencies +// */ +// public Race(String raceName, String ageRange, int speed, ArrayList traits, ArrayList skills, +// ArrayList laugnuage, ArrayList proficiencies) { +// this.raceName = raceName; +// this.ageRange = ageRange; +// this.speed = speed; +// this.traits = traits; +// this.skills = skills; +// this.laugnuage = laugnuage; +// this.proficiencies = proficiencies; +// } + + + +} diff --git a/final-project/src/dnd/Skills.java b/final-project/src/dnd/Skills.java new file mode 100644 index 0000000..adff257 --- /dev/null +++ b/final-project/src/dnd/Skills.java @@ -0,0 +1,84 @@ +package dnd; + +/** + * + * Object stores information about a character's skills arrays. Firstly, the name of each skill, and secondly the value of each skill. When constructed, a private method is called + * which adds any proficiency bonus to each skill and then adds the ability score modifier to each skill. + * + */ +public class Skills { + +// TODO: Need to verify skills are in correct order. + private String[] allSkillsText = {"Acrobatics", "Animal Handling", "Arcana", "Athletics", "Deception", "History", "Insight", "Intimidation", "Investigation", "Medicine", "Nature", "Perception", "Performance", "Persuasion", "Religion", "Sleight of Hand", "Stealth", "Survival"}; + +// TODO: Prof bonus comes from the class, changes upon certain level thresholds. + private final int profBonus = 5; + + private Stats[] stats; + + private int[] skills; + + + /** + * + * Default constructor for the Skills class. Should be constructed AFTER the user has generated their stats and chosen the skills they are proficient in. + * + * @param int[] skills + * @param Stats[] stats + * + */ + public Skills(int[] skills, Stats[] stats) { + + this.skills = skills; + + this.stats = stats; + + setSkills(); + + } + + /** + * + * Adds proficiency bonus to each element of the skills array, and then adds the corresponding AS modifier to each skill. + * + */ + private void setSkills() { + +// TODO: Need to verify these are the correct ability scores for each skill. + int[] skillsAbilities = { 1, 4, 3, 0, 5, 3, 4, 5, 3, 4, 3, 4, 5, 5, 3, 1, 4 }; + + for(int i = 0; i < allSkillsText.length; i++) { + + if(skills[i] == 1) { + + skills[i] = profBonus; + + } + + skills[i] += stats[skillsAbilities[i]].getModifier(); + + } + + } + + /** + * + * Returns the value of each skill's score. + * + * @return int[] skills + * + */ + public int[] getSkills() { + + return skills; + + } + +// TODO: Need to implement overloaded method to return one specific skill. + public int getSkill(String skill) { + + return 0; + + } + +} \ No newline at end of file diff --git a/final-project/src/dnd/Stats.java b/final-project/src/dnd/Stats.java new file mode 100644 index 0000000..dcb5e46 --- /dev/null +++ b/final-project/src/dnd/Stats.java @@ -0,0 +1,56 @@ +package dnd; + +public abstract class Stats { + + public int calcSavingThrow(int abilityScore) { + + switch (abilityScore) { + case 1: + return -5; + case 2: + case 3: + return -4; + case 4: + case 5: + return -3; + case 6: + case 7: + return -2; + case 8: + case 9: + return -1; + case 10: + case 11: + return 0; + case 12: + case 13: + return 1; + case 14: + case 15: + return 2; + case 16: + case 17: + return 3; + case 18: + case 19: + return 4; + case 20: + return 5; + default: + return 0; + + } + + } + + abstract void increaseScore(); + + abstract int getScore(); + + abstract int getModifier(); + + abstract int getSavingThrow(); + + abstract String getDescription(); + +} diff --git a/final-project/src/dnd/Strength.java b/final-project/src/dnd/Strength.java new file mode 100644 index 0000000..df00aa0 --- /dev/null +++ b/final-project/src/dnd/Strength.java @@ -0,0 +1,67 @@ +package dnd; + +public class Strength extends Stats { + + private int abilityScore; + private int abilityScoreModifier; + + public Strength(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public Strength(Strength str) { + + this.abilityScore = str.getScore(); + this.abilityScoreModifier = str.getModifier(); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + + public String getDescription() { + + return "Natural athleticism and bodily power."; + + } + + public int getMaxCarryWeight() { + + return abilityScore * 15; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/Wisdom.java b/final-project/src/dnd/Wisdom.java new file mode 100644 index 0000000..8dc39cc --- /dev/null +++ b/final-project/src/dnd/Wisdom.java @@ -0,0 +1,55 @@ +package dnd; + +public class Wisdom extends Stats { + + private int abilityScore; + private int abilityScoreModifier; + + public Wisdom(int abilityScore) { + + this.abilityScore = abilityScore; + this.abilityScoreModifier = calcSavingThrow(abilityScore); + + } + + public int getScore() { + + return abilityScore; + + } + + public int getModifier() { + + return abilityScoreModifier; + + } + + public int getSavingThrow() { + + return getModifier(); + + } + +// TODO: Need description. + public String getDescription() { + + return ""; + + } + + @Override + public String toString() { + + return "Ability Score: " + abilityScore + " | Modifier: " + abilityScoreModifier + " | Description: " + + getDescription(); + + } + + @Override + void increaseScore() { + + abilityScore++; + + } + +} diff --git a/final-project/src/dnd/Wizard.java b/final-project/src/dnd/Wizard.java new file mode 100644 index 0000000..5e62c93 --- /dev/null +++ b/final-project/src/dnd/Wizard.java @@ -0,0 +1,91 @@ +package dnd; + +public class Wizard implements ClassTemplate { + + private int HP; + + private int level; + +// TODO: This should be the type of die. + private int hitDie; + + public Wizard(Stats[] stats, int level) { + + + + } + +// TODO: Need to figure out how to contain class progression information. Potentially a double String array, each row equals a level, each column a different thing. Should class features be a separate class, ie. BarbFeatures, BardFeatures, etc? + + public String getDescription() { + // TODO Auto-generated method stub + return null; + } + + public String[] getProgression() { + // TODO Auto-generated method stub + return null; + } + + public String[] getClassFeatures() { + // TODO Auto-generated method stub + return null; + } + + public String getHitDie() { + // TODO Auto-generated method stub + return null; + } + + public int getHPatLv1() { + // TODO Auto-generated method stub + return 0; + } + + public int getHPpastLv1() { + // TODO Auto-generated method stub + return 0; + } + + public String[] getArmorProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getWeaponProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] getToolProf() { + // TODO Auto-generated method stub + return null; + } + + public String[] availableSkills() { + // TODO Auto-generated method stub + return null; + } + + public String[] startingEquipChoices() { + // TODO Auto-generated method stub + return null; + } + + public boolean advantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + public boolean disadvantageCheck(Stats abilityScore) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String[] getSavingThrows() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/final-project/src/dnd/dndTestClient.java b/final-project/src/dnd/dndTestClient.java new file mode 100644 index 0000000..3989bd4 --- /dev/null +++ b/final-project/src/dnd/dndTestClient.java @@ -0,0 +1,24 @@ +package dnd; + +public class dndTestClient { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + CharacterStats stats = new CharacterStats(10, 10, 10, 10, 10, 10); + + Dragonborn chosenRace = new Dragonborn(); + + for(int i = 0; i < chosenRace.getASI().length; i++) { + + stats.increaseStat(chosenRace.getASI()[i]); + + } + + Character characterInfo = new Character("Generic", 50, 4, 6, 150, "brown", "black", chosenRace, stats); + + System.out.println(characterInfo.toString()); + + } + +}