Hallo,
nachdem ich jetzt das Spiel abgabefertig formatiert habe, scheint sich ein bug eingeschlichen zu haben, ich finde ihn nicht! Ich wäre echt super glücklich wenn ihm jmd findet.
zur Aufgabe wir sollten ein textbasiertes Rollenspiel programmieren indem ein Monster und ein Spieler gegeneinander kämpfen: Die Eingaben kommen über die Konsole.
Das Problem: Das Spiel endet obwohl der Monster und/oder Spieler noch HPs haben. Die Abgabe ist heute um 00:00h
nachdem ich jetzt das Spiel abgabefertig formatiert habe, scheint sich ein bug eingeschlichen zu haben, ich finde ihn nicht! Ich wäre echt super glücklich wenn ihm jmd findet.
zur Aufgabe wir sollten ein textbasiertes Rollenspiel programmieren indem ein Monster und ein Spieler gegeneinander kämpfen: Die Eingaben kommen über die Konsole.
Das Problem: Das Spiel endet obwohl der Monster und/oder Spieler noch HPs haben. Die Abgabe ist heute um 00:00h
Java:
import java.util.Scanner;
/**
*Die ist ein textbasiertes Rollenspiel in dem ein Spieler und ein Monster aufeinander treffen.
*
*@param Eingabewert in der Konsole
*
*/
public class Rollenspiel {
/**
*Das Rollenspiel funktioniert indem ein Monster un ein Spieler gegeneinander antreten,
*Sie haben vorher definierte Atrribute, durch Texteingabe koennen Aktionen ausgeführt werden.
*DIe Angriffe werden durch einen Verlgleich mit einem Zufallswert ausgeloest,
*es stehen drei Heilungen zur Verfuegung
*@param args
*/
public static void main(String[] args) {
int spielerHp = 140;// Leben des Spielers
int spielerAtk = 30;// Angriffstaerke des Spielers
double spielerHit = 0.6;// Hitwert des Spielers
int monsterHp = 150;// Leben des Monsters
int monsterAtk = 35;// Angriffsstaerke des Monsters
double monsterHit = 0.45;// Hitwert des Monsters der verlgichen wird
int spielerMaxHp = 140;// maximale HP des Spielers
int item = 3;// Anzahl der Items
int heil = 15;// Bonus der Heilung
Scanner sc = new Scanner(System.in);// (System.in) Parameter für Konsoleneingabe
System.out.println("Spieler -- Hp140 -- Atk30");
System.out.println("Gegner -- Hp150 -- Atk35");
while (spielerHp > 0 && monsterHp > 0) {/*wiederholt die Aktionen in der Schleife,
* solange die Spieler oder Monster am Leben sind bekaempfen sie sich
*/
System.out.println("Moegliche Aktionen:");// moegliche ausfuehrbare Aktionen
System.out.println("1 -> Angriff");
System.out.println("2 -> item" + "(" + item + "verbleibend)");
System.out.println("Welche Aktion?:");
int antwort = sc.nextInt();
// die Antwort soll eingegeben werden ,entweder 1 oder 2, nextInt liest integer Wert ein
switch (antwort) {
default: /*
* abweichende Eingaben von 1 und 2 werden als fehlerhaft deklariert
* danach greift das Monster an
*/
System.out.println("Fehlerhafte Aktion! " + "Monster greift an");
double w = 0.0; //*Vergleich Gleitkommazahlen und gibt ganzzahligen Wert aus
w = Math.random();//es gibt eine Zufallszahl zwischen 0 und 1 aus
if (w > monsterHit) {//vergleicht w mit dem Hit-Wert
System.out.println("Monster verfehlt Spieler");
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "--Atk35");
} else {
double min = 1.0;
double max = 2.0;
double zf = (Math.random() * (max-min)) + min;
// Neuberechnung des Zf-Wertes
spielerHp -= (monsterAtk * zf);
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
// gibt den neuen spielerHp nach der Attacke an
System.out.println("Monster --" + "Hp" + monsterHp + "--Atk35");
}
break;
case 2:
if (item > 0) { // Item soll maximal 3 mal eingesetzt werden können
spielerHp += heil;
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
// gibt den neuen Spieler-Hp-Wert aus
System.out.println("Monster --" + "Hp" + monsterHp + "-- Atk35");
// das Statusattribut des Monsters wechselt nicht
item -= 1;//Item wird um eins vermindert
} else {
System.out.println("Nicht genuegend Heiltränke");
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "-- Atk35");
// denn nur der Hp-wert variiert
}
System.out.println("Monster greift an");
double x = 0.0;
x = Math.random();// es gibt eine Zufallszahl zwischen 0 und 1 aus
if (x > monsterHit) {// vergleich x mit dem Hit-Wert
System.out.println("Monster verfehlt Spieler");
System.out.println("Spieler --" + "Hp" + spielerHp + "--Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "-- Atk35");
} else {
double min = 1.0;
double max = 2.0;
double zf = (Math.random() * (max-min)) + min;
// rechnet und gibt den Zufallszahl zwischen 1 und 2 aus
spielerHp -= (monsterAtk * zf);
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
// gibt den neuen spielerHp nach der Attacke aus
System.out.println("Monster --" + "Hp" + monsterHp + "-- Atk35");
}
break;
case 1:
double y = 0.0;
y = Math.random();// es gibt eine Zufallszahl zwischen 0 und 1 aus
if (y > spielerHit) {// vergleicht y mit dem Hit-Wert
System.out.println("Spieler verfehlt Monster");//so trifft die Attacke nicht
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "-- Atk35");
} else {
double min = 1.0;
double max = 2.0;
double zf = (Math.random() * (max-min)) + min;
// Neuberechnung des zf-Wertes
monsterHp -= (spielerAtk * zf);
System.out.println("Spieler greift an");
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "--Atk35");
// gibt den neuen monsterHp nach der Attacke aus
}
System.out.println("Monster greift an");
double z = 0.0;
z = Math.random();// es gibt eine Zufallszahl zwischen 0 und 1 aus
if (z > monsterHit) {// vergleicht z mit dem Hit-Wert
System.out.println("Monster verfehlt Spieler");// so trifft die Attacke nicht
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
System.out.println("Monster --" + "Hp" + monsterHp + "--Atk35");
} else {
double min = 1.0;
double max = 2.0;
double zf = (Math.random() * (max-min)) + min;
// Neuberechnung des Zf-Wertes
spielerHp -= (monsterAtk * zf);
System.out.println("Spieler --" + "Hp" + spielerHp + "-- Atk30");
// gibt den neuen spielerHp nach der Attacke an
System.out.println("Monster --" + "Hp" + monsterHp + "--Atk35");
}
break;
}
if (spielerHp <= 0) {
System.out.println("Monster gewinnt");
continue;
}
if (monsterHp <= 0) {
System.out.println("Spieler gewinnt");
continue;
}
}
}
}
Zuletzt bearbeitet: