# Pokemon Spiel Funktioniert nicht ?



## Papaya (3. Apr 2021)

Liebe Menschen,

ich hoffe jemand von euch kann  mir sagen was ich ändern muss, ich kann ihn nämlich nicht runnen. Hier mein Code :

P.s bitte nicht steinigen, bin Anfängerin .

Danke vorab!


```
public class Testklasse {
   
    private int gesundheit;
    private int staerke;
    private int schnelligkeit;
    private String name;
   
   
   
    public void Pokemon( int gesundheit, int staerke, int schnelligkeit) {
       
        assert gesundheit >= 1;
        assert gesundheit <= 400;
        assert staerke >= 1;
        assert staerke <= 400;
        assert schnelligkeit >= 1;
        assert schnelligkeit <= 400;
       
        this.gesundheit = gesundheit;
        this.staerke = staerke;
        this.schnelligkeit = schnelligkeit;
        this.name = name;
       
        }
   
    public void kampf(Testklasse pokemon1, Testklasse pokemon2) {
       
       
            System.out.println(pokemon1.name + " Beginnt das Spiel gegen " + pokemon2.name);
            while
                (pokemon1.gesundheit >= 1 || pokemon2.gesundheit >=1)
            {
                pokemon2.gesundheit = pokemon2.gesundheit - pokemon1.staerke;
               
                System.out.println(pokemon1.name + " verursacht" + pokemon1.staerke + " schaden an" + pokemon2.name + " und " + pokemon2.name
                        + " hat " + pokemon2.gesundheit +  " Gesundheit übrig ");
               
                if
                (pokemon2.gesundheit <= 0)
                    break;
               
                pokemon1.gesundheit = pokemon1.gesundheit - pokemon1.staerke;
               
                System.out.println(pokemon2.name +  " verursacht " + pokemon2.staerke +  " schaden an " + pokemon1.name +
                    " und " + pokemon1.name + " hat " + pokemon1.gesundheit + " Gesundheit übrig "    );
            
                if
                (pokemon1.gesundheit <1)
                    System.out.println(pokemon1.name + " hat den Kampf verloren ");
                else
                {
                    System.out.println(pokemon2.name + " hat den Kampf verloren ");
                }
        }
       
       
    }

   
   
}
```


```
public class PokemonSpiel {

    public static void main(String[] args) {
        Testklasse.kampf(glurak, turtok, bisaflor);

    }

    public int gesundheit;
    public int  staerke;
    public int schelligkeit;
   
    private  PokemonSpiel glurak;
    private PokemonSpiel turtok;
    private PokemonSpiel bisaflor;
   
   
    public PokemonSpiel() {
       
        glurak = new PokemonSpiel(100, 50, 50);
        turtok = new PokemonSpiel(150, 25, 150);
        bisaflor = new PokemonSpiel(300, 10, 40);
```


----------



## mihe7 (3. Apr 2021)

Zuerst mal solltest Du Code-Tags verwenden, um hier Code zu posten (in der Toolbar des Editors ganz links "</>" anklicken). Dann solltest Du Dich an die Benennungskonventionen von Java halten: Namen von Variablen, Parametern und Methoden in lowerCamelCase. Methoden sollten danach benannt werden, was sie tun - z. B. initPokemon und nicht einfach Pokemon.

Jetzt aber zum Poblem: Du musst in main() ein Objekt Deiner Testklasse erzeugen, um die kampf-Methode auf diesem Objekt aufrufen zu können:

```
Testklasse test = new Testklasse();
test.kampf(...);
```


----------



## fhoffmann (3. Apr 2021)

Deine Klassenstruktur ist nicht klar:
- Du hast eine Klasse "Testklasse", die einen Pokemon darstellt. Warum erstellst du nicht eien Klasse "Pokemon"?
- Die Klasse "Testklasse" hat folgende Methode


Papaya hat gesagt.:


> public void Pokemon( int gesundheit, int staerke, int schnelligkeit) {


Und diese Methode weist `this.name` einen Wert zu, der überhaupt nicht übergeben wird.

Du solltest dir noch einmal genau überlegen, wie deine Klassenstruktur aussehen soll. Wenn du nicht weiter weißt - das ist ganz normal -, kannst du uns gerne fragen.


----------



## temi (4. Apr 2021)

Außerdem erwartet deine Methode kampf() zwei Parameter vom Typ Testklasse, während du versuchst sie mit drei Parametern vom Typ PokemonSpiel aufzurufen.

Alles in allem ein ziemliches Durcheinander.

Mein Vorschlag zum Start wäre eine Klasse PokemonSpiel als Hauptklasse mit der main() und eine Klasse Pokemon, die ein einzelnes Pokemon repräsentiert. Davon kannst du in der Hauptklasse dann Instanzen (bzw. Objekte) erzeugen.


----------

