Hi,
Ich bin gerade dabei ein Spiel in Java zu schreiben, dummerweise ist mein Javawissen mehr oder weniger wie Flickenteppich. D.h ich kenn Befehle und ähnliches, aber erst letzten OOP kennen gelernt.

So, zu meinem Problem: In meinem Programm erstell ich 2 Objekte der Klasse Einheit "Gegner" und "Spieler".
Wenn ich jetzt für beide die Attribute vergebe, sind sie vor beginn des Kampfes wieder gleich und bleiben auch gleich. Sprich, wenn der Spieler 10 Lebenspunkte verliert verliert der Gegner auch welche.
Soweit ich das nun verstanden habe bedeutet OOP das ich z.B. 2 Schränke erstellen kann a 1,5 m *1 m*1m. Und dann dem einen 2 Schubladen und dem anderen 3 Schubladen hinzufügen kann...
Naja, schaut euch den Code an und sagt mir ob ihr den Fehler findet.


Entschuldigt, dass ich keine Kommentare habe XD Hoffentlich versteht ihr es trotzdem
Achja, gibts hier eine Möglichkeit den Text zu verstecken und auf Knopfdruck wieder erscheinen zu lassen, da das ganze doch ziemlich lang wird.

Klasse Spiel (Hauptklasse):

Code:

import java.io.*;
import java.util.*;


public class Spiel {
	
	
static	Einheit Spieler = new Einheit ();

	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());
			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(Spieler.Staerke + " Staerke ");
		System.out.println(Spieler.Geschick + " Geschick");
		System.out.println(Spieler.HealthPoints + " Lebenspunkte");
		
		while (Spiel)
		{
		System.out.println("Sie treffen auf einen Gegner: ");
		

		
		
		while (!Gerettet || !Gewonnen)
		{		System.out.println("Wollen sie den Kampf beginnen?");
		System.out.println("1== Stellen");
		System.out.println("2==Weglaufen");
		KampfJa=Kampf.Aktion(Integer.parseInt(KampfWahl.readLine()));
		switch (KampfJa)
		{
		case 1: Gewonnen= Kampf.GegnerDaten(); break; 
		case 2: Gerettet= Kampf.Weg();break;
		
		
		
		
		}
		
		Random Ueberlebt = new Random ();
		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;
			Spieler.Tot=false;
			
			
			
		}
		else 
			System.out.println("Du bist gestorben!");
			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?");
		int Nochma = Integer.parseInt(Nochmal.readLine());
		
		switch (Nochma)
		{
		case 1: Spiel=true;
		case 2: Spiel= false;
		
		}
		
		}
		
		
		
		
		
		
		
		
	}
	
}
Klasse Einheit:
Code:
public class Einheit {
	
	static int Geschick;
	static int Staerke;
	static int StaerkeWahr;
	static String Klasse;
	static int Entkommen;
	boolean Tot;
	static int HealthPoints;
	static int Schaden;
	
	
	public static void Dieb () {
		
		Geschick = 75;
		Staerke = 2;
		StaerkeWahr=2;
		Klasse = "Dieb";
		Entkommen = 50;
		HealthPoints = 300;
		Schaden = 50;
		
		
	}
	
	
	
	public static void Krieger ()
	{
		
		Geschick = 50;
		Staerke = 4;
		StaerkeWahr=4;
		Klasse = "Krieger";
		Entkommen = 0;
		HealthPoints=250;
		Schaden = 75;
		
	}

}
Klasse Kampf:
Code:
import java.io.*;
import java.util.Random;

public class Kampf extends Spiel {
	
	public static void Versuch ()
	{
		
		System.out.println(Spieler.Staerke+" "+ Gegner.Staerke);
		System.out.println(Spieler.Geschick+" "+ Gegner.Geschick);
		
		
		
		
		
		
		
		
		
	}
	
	
static	boolean Player = false;
	
	static	Einheit Gegner = new Einheit();

	public static int Aktion(int Kampf)
	{
		if (Kampf==1)
		{
			System.out.println("");
			return 1;		
			
		}
		if (Kampf == 2)
		{
		
		return 2;
		}
		
		
		return 3;
		
		
		
	}
	
	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(Gegner.Staerke + " Staerke ");
			System.out.println(Gegner.Geschick + " Geschick");	
			System.out.println(Gegner.HealthPoints + " Lebenspunkte");
			
			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 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;
	}
	
	
	
	
	
	
	
}

MfG Erinaceus