Ok ich habe es mir mal angesehen und ich bin entsetzt........ wo kommen die ganzen Zeilenunbrüche her? DIE BRAUCHT DOCH KEINER!
Schonmal was von Tabulatoren gehört?
Entweder du schriebst "if (BEDINGUNG) {" ODER "if (BEDINGUNG) ZEILENUMBRUCH {", aber niemals mischen.
Keine Variablen in Schleifen deklarieren.
Nicht 40 Objekte von BufferedReader erzeugen und dann jeweils nur einmal benutzen... du brauchst sowieso nur eins
Wozu erbt Kampf die Klasse Spiel?? UM NOCH MEHR BUFFEREDREADER-OBJEKTE ZU ERSTELLEN?????
Mit anderen Worten: ich habe allein 10 Minuten aufwenden müssen um da mal eine gewisse Übersichtlichkeit zu schaffen.
Spiel
Code:
mport java.io.*;
import java.util.*;
public class Spiel
{
static Einheit Spieler = new Einheit ();
/* FIXME: wieso brauchst du das x-mal? ein mal reicht völlig aus */
static BufferedReader Klasse = new BufferedReader (new InputStreamReader (System.in));
static BufferedReader KampfWahl = new BufferedReader (new InputStreamReader (System.in));
static BufferedReader Nochmal = new BufferedReader (new InputStreamReader (System.in));
static int KlassenWahl;
static boolean KlassenWahlFalsch = false;
static boolean Gerettet = false;
static int KampfJa;
static boolean Gewonnen = false;
static boolean Spiel = true;
public static void main (String args []) throws NumberFormatException, IOException
{
System.out.println("Waehlen sie ihre Klasse:");
System.out.println("Krieger == 1");
System.out.println("Dieb == 2");
while (!KlassenWahlFalsch)
{
try
{
KlassenWahl = Integer.parseInt(Klasse.readLine());
/* FIXME: switch wäre angebrachter... */
if (KlassenWahl == 1)
{
Spieler.Krieger();
KlassenWahlFalsch = !KlassenWahlFalsch;
}
else if (KlassenWahl == 2)
{
Spieler.Dieb();
KlassenWahlFalsch = !KlassenWahlFalsch;
}
else
{
System.out.println("Die Eingabe war ungültig bitte wählen sie eine Klasse");
}
}
catch (NumberFormatException e)
{
System.out.println("Der eingeben Wert kann nicht akzeptiert werden.");
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("Sie sind ein " + Spieler.Klasse + " Und besitzen folgenden Attribute: ");
System.out.println("\tStaerke " + Spieler.Staerke);
System.out.println("\tGeschick " + Spieler.Geschick);
System.out.println("\tLebenspunkte " + Spieler.HealthPoints);
while(Spiel)
{
/* FIXME: der ganze hier folgende Code
* ist mehr oder weniger unverständlich
* und ergibt keinen Sinn.
* */
System.out.println("Sie treffen auf einen Gegner: ");
/* FIXED: || zu && geändert... */
while (!Gerettet && !Gewonnen)
{
System.out.println("Wollen sie den Kampf beginnen?");
System.out.println("\t1 == Stellen");
System.out.println("\t2 == Weglaufen");
KampfJa = Kampf.Aktion(Integer.parseInt(KampfWahl.readLine()));
switch(KampfJa)
{
case 1:
Gewonnen = Kampf.GegnerDaten();
break;
case 2:
Gerettet = Kampf.Weg();
break;
/* TODO: was ist mit einem "default" für Werte außerhalb 1 und 2 (??) */
}
/* FIXME: deklarationen in einer Schleife sind unschön */
Random Ueberlebt = new Random();
/* FIXME: fifty fifty chance? das ist ja nett :) */
if (50 > Ueberlebt.nextInt(100))
{
System.out.println("Da hast du noch einmal Glück gehabt, dein Gegner hat dich nur schwer verletzt und nicht getötet!");
Spieler.HealthPoints = 10;
/* FIXME: war das vorher schonmal true (??), wenn nicht -> raus damit */
Spieler.Tot = false;
}
/* TODO: und wenn man gewonnen hat, was dann?
* "Du bis gestorben"... so macht Gewinnen (keinen) Spass
* */
else
{
System.out.println("Du bist gestorben!");
/* FIXED: System.exit(0) in den Bedingungsblock gezogen */
System.exit(0);
}
}
System.out.println("Du hast gewonnen und ziehst weiter auf der Suche nach noch mehr Schwächlingen");
System.out.println("Willse nochma?");
/* FIXME: dem "Nochma" könnte man noch ein "l" spendieren ^_^
* eine Deklaration einer Variablen in einer Schleife ist unschön
* */
int Nochma = Integer.parseInt(Nochmal.readLine());
if (Nochma == 1) Spiel = true;
else Spiel = false;
}
}
}
Einheit
Code:
public class Einheit
{
int Geschick;
int Staerke;
int StaerkeWahr;
int HealthPoints;
int Schaden;
int Entkommen;
boolean Tot;
String Klasse;
public void Dieb()
{
Geschick = 75;
Staerke = 2;
StaerkeWahr=2;
Klasse = "Dieb";
Entkommen = 50;
HealthPoints = 300;
Schaden = 50;
}
public void Krieger()
{
Geschick = 50;
Staerke = 4;
StaerkeWahr=4;
Klasse = "Krieger";
Entkommen = 0;
HealthPoints=250;
Schaden = 75;
}
}
Spiel
Code:
import java.io.*;
import java.util.Random;
public class Kampf extends Spiel
{
static boolean Player = false;
static Einheit Gegner = new Einheit();
public static boolean GegnerDaten()
{
Random GegnerWahl = new Random();
boolean Kampf;
if (50 < GegnerWahl.nextInt(100)) Gegner.Dieb();
else Gegner.Krieger();
System.out.println("Ihr Gegner ist ein " + Gegner.Klasse + " Und besitzen folgenden Attribute: ");
System.out.println("\tStaerke " + Gegner.Staerke);
System.out.println("\tGeschick " + Gegner.Geschick);
System.out.println("\tLebenspunkte " + Gegner.HealthPoints);
Kampf = Kaempfen();
return Kampf;
}
public static boolean Weg()
{
Random WegRennen = new Random();
if (Spieler.Entkommen > WegRennen.nextInt(100))
{
System.out.println("Du konntest entkommen");
return true;
}
else
{
System.out.println("Sie sind nicht entkommen");
}
Player = false;
return false;
}
public static void Versuch()
{
System.out.println(Spieler.Staerke+" "+ Gegner.Staerke);
System.out.println(Spieler.Geschick+" "+ Gegner.Geschick);
}
public static int Aktion(int Kampf)
{
if (Kampf==1)
{
System.out.println("");
return 1;
}
if (Kampf == 2)
{
return 2;
}
return 3;
}
public static boolean Kaempfen()
{
Random Wahr = new Random();
while (!Spieler.Tot || !Gegner.Tot)
{
if (Player)
{
if (Spieler.Geschick>Wahr.nextInt(100))
{
if (Spieler.StaerkeWahr>Wahr.nextInt(100))
{
Gegner.HealthPoints=Gegner.HealthPoints-Spieler.Staerke/10;
System.out.println("Du triffst deinen Gegner mit "+ Spieler.Staerke/10+" Schaden");
System.out.println("Du hast "+Spieler.HealthPoints + " Lebenspunkte.");
System.out.println("Dein Gegner hat "+Gegner.HealthPoints+" Lebenspunkte");
}
else
{
Gegner.HealthPoints=Gegner.HealthPoints- Spieler.Staerke* Spieler.Schaden/10;
System.out.println("Du triffst deinen Gegner mit "+ Spieler.Staerke* Spieler.Schaden/10+" Schaden");
System.out.println("Du hast "+Spieler.HealthPoints + " Lebenspunkte.");
System.out.println("Dein Gegner hat "+Gegner.HealthPoints+" Lebenspunkte");
}
}
else
{
System.out.println("Du hast daneben geschlagen");
}
Player=!Player;
}
else
{
if (Gegner.Geschick>Wahr.nextInt(100))
{
if (Gegner.StaerkeWahr>Wahr.nextInt(100))
{
Spieler.HealthPoints=Spieler.HealthPoints-Gegner.Staerke/10;
System.out.print("Dein Gegner trifft dich mit "+ Gegner.Staerke/10+" Schaden");
System.out.println("Du hast "+Spieler.HealthPoints + " Lebenspunkte.");
System.out.println("Dein Gegner hat "+Gegner.HealthPoints+" Lebenspunkte");
}
else
{
Spieler.HealthPoints=Spieler.HealthPoints- Gegner.Staerke* Gegner.Schaden/10;
System.out.println("Dein Gegner trifft dich mit "+ Gegner.Staerke* Gegner.Schaden/10+" Schaden");
System.out.println("Du hast "+Spieler.HealthPoints + " Lebenspunkte.");
System.out.println("Dein Gegner hat "+Gegner.HealthPoints+" Lebenspunkte");
}
}
else
{
System.out.println("Dein Gegner hat daneben geschlagen!");
}
Player=!Player;
}
if (Gegner.HealthPoints<0 || Spieler.HealthPoints<0)
{
if (Gegner.HealthPoints<0)
{
System.out.println("Du hast verloren!");
Gegner.HealthPoints=0;
Gegner.Tot=true;
}
else
{
System.out.println("Du hast gewonnen!");
Spieler.HealthPoints=0;
Spieler.Tot=true;
}
return Spieler.Tot;
}
if (neueRunde())
{
continue;
}
}
return Spieler.Tot;
}
public static boolean neueRunde()
{
BufferedReader Neu = new BufferedReader(new InputStreamReader (System.in));
int Wahl;
boolean WahlErfolg=false;
System.out.println("Weiterkämpfen?");
while (!WahlErfolg)
{
System.out.println("1==Weiterkämpfen");
System.out.println("2==Weglaufen");
try
{
Wahl=Integer.parseInt(Neu.readLine());
WahlErfolg=true;
switch (Wahl)
{
case 1: return false;
case 2: Weg(); return true;
case 25: Versuch();
}
}
catch (NumberFormatException e)
{
System.out.println("Der Eingegeben Wert war falsch!");
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
}
Ich empfehle dir folgendes:
Alle Kommentare, die ich eingefügt habe, SORGFÄLTIG lesen.
Die Klasse Kampf in dem Müll zu schmeißen und komplett zu überarbeiten ----> SAUBEREN STIL EINHALTEN (!)
Das war die letzte Ausgabe, bevor ich es aufgegeben habe:
Code:
Waehlen sie ihre Klasse:
Krieger == 1
Dieb == 2
1
Sie sind ein Krieger Und besitzen folgenden Attribute:
Staerke 4
Geschick 50
Lebenspunkte 250
Sie treffen auf einen Gegner:
Wollen sie den Kampf beginnen?
1 == Stellen
2 == Weglaufen
1
Ihr Gegner ist ein Dieb Und besitzen folgenden Attribute:
Staerke 2
Geschick 75
Lebenspunkte 300
Dein Gegner trifft dich mit 10 Schaden
Du hast 240 Lebenspunkte.
Dein Gegner hat 300 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 240 Lebenspunkte.
Dein Gegner hat 270 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 240 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 230 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 220 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 210 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 200 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 190 Lebenspunkte.
Dein Gegner hat 240 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 190 Lebenspunkte.
Dein Gegner hat 210 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 190 Lebenspunkte.
Dein Gegner hat 180 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 190 Lebenspunkte.
Dein Gegner hat 150 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 180 Lebenspunkte.
Dein Gegner hat 150 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 170 Lebenspunkte.
Dein Gegner hat 150 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 170 Lebenspunkte.
Dein Gegner hat 120 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 160 Lebenspunkte.
Dein Gegner hat 120 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 150 Lebenspunkte.
Dein Gegner hat 120 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 140 Lebenspunkte.
Dein Gegner hat 120 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 130 Lebenspunkte.
Dein Gegner hat 120 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 130 Lebenspunkte.
Dein Gegner hat 90 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 120 Lebenspunkte.
Dein Gegner hat 90 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 120 Lebenspunkte.
Dein Gegner hat 60 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 110 Lebenspunkte.
Dein Gegner hat 60 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 100 Lebenspunkte.
Dein Gegner hat 60 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 100 Lebenspunkte.
Dein Gegner hat 30 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 90 Lebenspunkte.
Dein Gegner hat 30 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du hast daneben geschlagen
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner trifft dich mit 10 Schaden
Du hast 80 Lebenspunkte.
Dein Gegner hat 30 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 80 Lebenspunkte.
Dein Gegner hat 0 Lebenspunkte
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Dein Gegner hat daneben geschlagen!
Weiterkämpfen?
1==Weiterkämpfen
2==Weglaufen
1
Du triffst deinen Gegner mit 30 Schaden
Du hast 80 Lebenspunkte.
Dein Gegner hat -30 Lebenspunkte
Du hast verloren!
Da hast du noch einmal Glück gehabt, dein Gegner hat dich nur schwer verletzt und nicht getötet!
Wollen sie den Kampf beginnen?
1 == Stellen
2 == Weglaufen
Hervorzuheben wäre:
Code:
Du hast 80 Lebenspunkte.
Dein Gegner hat -30 Lebenspunkte
Also denke ich das Hauptproblem ist behoben...
Wenn du die ganzen TODOs und FIXMEs die ich hinzugefügt habe beachtet und angewendet hast und danach immernoch Probleme hast, dann schau ich mir das ganze gerne nochmal an
mfG. BlackBerry