Difference between revisions of "Java - I/O und Exceptions NEW"
Line 58: | Line 58: | ||
Der Schaden berechnet sich wie folgt: | Der Schaden berechnet sich wie folgt: | ||
Schaden = (Atk_Pw) * (APk_A / DPk_D | Schaden = (Atk_Pw) * (APk_A / DPk_D) | ||
Atk_Pw = Power Wert der Attacke, die Ausgewählt wurde<br> | Atk_Pw = Power Wert der Attacke, die Ausgewählt wurde<br> | ||
APk_A = Attack Wert des angreifenden Pokémon<br> | APk_A = Attack Wert des angreifenden Pokémon<br> | ||
DPk_D = Defense Wert des verteidigenden Pokémon<br> | DPk_D = Defense Wert des verteidigenden Pokémon<br> | ||
Das Pokémon mit dem größeren Speed Wert greift zuerst an. Verliert das angegriffene Pokémon bevor es angegriffen hat, wird der Angriff übersprungen. | Das Pokémon mit dem größeren Speed Wert greift zuerst an. Verliert das angegriffene Pokémon bevor es angegriffen hat, wird der Angriff übersprungen. |
Revision as of 09:41, 29 June 2023
Exceptions
Aufgabe: Erweitere die Personenverwaltung um Exceptions
Die, in der früheren Aufgabe erstellte, Personenverwaltung, soll nun etwas sicherer für Fehler gemacht werden.
Erweitere den Code so, dass der User die Personen mit Hilfe eines Scanners erstellt.
Dabei soll auf ungültige Inputs vernünftig reagiert werden, ohne dass das Programm abstürzt.
Requirements
InvalidPersonName-Exception
Wenn ein Nutzer eine Person anlegt, die eine Zahl im Namen hat, soll eine "InvalidPersonName-Exception" geworfen werden.
Die Anlegung des Objektes soll abgebrochen werden und der Nutzer informiert, dass dieser Name ungültig ist.
Das Programm soll nicht terminieren, sondern den Nutzer erneut bitten einen Namen einzugeben.
NullpointerException
Der Nutzer soll Personen durch ihren Namen finden können.
Wird ein Name eingegeben, der nicht existiert, soll eine NullpointerException in der Personalverwaltung geworfen werden.
Der Stacktrace dieser Exception soll in der Main ausgegeben werden.
Das Programm soll nicht terminieren und weitere Inputs erhalten.
Test
Option 1: Das Programm ist durch die Eingabe von ":q!" terminierbar.
Option 2: Du schreibst entsprechende Unittests, um zu prüfen, dass die richtige Exception geworfen wird.
File I/O
Aufgabe: Nutze die CSV-Dateien um ein Pokémon Arena Spiel zu erstellen
Mit den zur Verfügung gestellten Datensätzen soll der Arenakampf von Pokémon nachgebaut werden.
Der User soll ein Pokémon auswählen und mithilfe verschiedener Attacken ein gegnerisches Pokémon, welches vom Computer gesteuert wird, bekämpfen.
Requirements
CSV Einlesen
Importiere die Pokémon CSV und Attack CSV aus dem Kompetenzcenter in dein Projekt.
Lese die Daten ein und erstelle daraus die notwendigen Klassen.
Jedes Pokémon soll zwei zufällige Attacken bekommen.
Auswahl
Der Nutzer kann zu Beginn des Spiels ein Pokémon durch Angabe der Index-Nummer oder dem Namen wählen, dieses wird für den Kampf ausgewählt.
Gib auf der Konsole aus, um welches Pokémon es sich handelt und welche Werte und mögliche Attacken es hat.
Das gegnerischen Pokémon wählt der Computer zufällig.
Kampf
Nach der Selektion soll der Kampf gestartet werden.
Dem Nutzer werden die zwei Attacken aufgelistet.
Wählt der Nutzer einen Angriff aus der Liste, greift das Pokémon an.
Wenn die Attacke ausgeführt wird, dann beginnt die Schadensberechnung.
Schadensberechnung
Der Schaden berechnet sich wie folgt:
Schaden = (Atk_Pw) * (APk_A / DPk_D)
Atk_Pw = Power Wert der Attacke, die Ausgewählt wurde
APk_A = Attack Wert des angreifenden Pokémon
DPk_D = Defense Wert des verteidigenden Pokémon
Das Pokémon mit dem größeren Speed Wert greift zuerst an. Verliert das angegriffene Pokémon bevor es angegriffen hat, wird der Angriff übersprungen. Wenn die HP eines Pokémon auf 0 fallen, verliert der jeweilige Spieler
OPTIONAL Effektivität
Erweitere die Schadensberechnung und berücksichtige die Typen des Angriffs und des verteidigenden Pokémon.
Schaden = (Atk_Pw) * (APk_A / DPk_D) * (Lvl / 50) * Rnd * STAB * Eff1 * Eff2
Eff1 = Effektivität des Angriffs gegen Typ1 des verteidigenden Pokémon
Eff2 = Effektivität des Angriffs gegen Typ2 des verteidigenden Pokémon
Nutze die Effectiveness.csv Datei, um die Koeffizienten zu ermitteln.