Difference between revisions of "Java - I/O und Exceptions NEW"

From Coders.Bay Wiki
Jump to navigation Jump to search
Line 19: Line 19:
Das Programm soll nicht terminieren und weitere Inputs erhalten.<br>
Das Programm soll nicht terminieren und weitere Inputs erhalten.<br>


======Terminierung======
======Test======
Das Programm soll nur durch die Eingabe von ":q!" terminierbar sein.
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==
==File I/O==

Revision as of 12:08, 27 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) * (Lvl / 50)

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
Lvl = Das Level des angreifenden Pokémon
50 = Die Zahl 50

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.