Lernpfad:Hehomon/15: Unterschied zwischen den Versionen

3.036 Bytes hinzugefügt ,  07:21, 12. Apr. 2020
K
keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 20: Zeile 20:
     a2[shape="parallelogram", style="", label="Fähigkeit auswählen"]
     a2[shape="parallelogram", style="", label="Fähigkeit auswählen"]
     a3[shape="rect", style="", label="Fähigkeit anwenden"]
     a3[shape="rect", style="", label="Fähigkeit anwenden"]
     a4[shape="rect", style="", label="Angreifer gewinnt"]
     a4[shape="rect", style="filled", label="Angreifer gewinnt"]
      
      
     v1[shape="rect", style="", label="Verteidiger am Zug"]
     v1[shape="rect", style="", label="Verteidiger am Zug"]
     v2[shape="parallelogram", style="", label="Fähigkeit auswählen"]
     v2[shape="parallelogram", style="", label="Fähigkeit auswählen"]
     v3[shape="rect", style="", label="Fähigkeit anwenden"]
     v3[shape="rect", style="", label="Fähigkeit anwenden"]
     v4[shape="rect", style="", label="Verteidiger gewinnt"]
     v4[shape="rect", style="filled", label="Verteidiger gewinnt"]


     if1[shape="diamond", style="", label="Hat Verteidiger\n0 LP?"];
     if1[shape="diamond", style="filled", label="Hat Verteidiger\n0 LP?"];
     if2[shape="diamond", style="", label="Hat Angreifer\n0 LP?"];
     if2[shape="diamond", style="filled", label="Hat Angreifer\n0 LP?"];


   
   
Zeile 47: Zeile 47:
}
}
</graphviz></center>
</graphviz></center>
Wir müssen für unser Spiel also nach dem Anwenden einer Fähigkeit noch eine Abfrage ergänzen, die prüft, ob der Gegner noch Lebenspunkte hat oder nicht.
Die grau hinterlegten Aktionen haben wir noch nicht implementiert. Sie legen die Siegbedingung fest, und was bei ihrem Eintreten passieren soll.
 
Wir müssen für unser Spiel also jedes Mal nach dem Anwenden einer Fähigkeit noch eine Abfrage ergänzen, die prüft, ob der Gegner noch Lebenspunkte hat oder nicht.
 
Das Prüfen der Bedingung ist Aufgabe des ''Controllers'', die Anzeige des Siegers übernimmt die ''View''.
{{Aufgabe:Start|Icon=BlueJ Logo.png}}
<syntaxhighlight lang="java">
    private void pruefeSiegbedingung() {
        if(verteidiger.getLp() <= 0) {
            view.angreiferGewinnt();
        } else if(angreifer.getLp() <= 0) {
            view.verteidigerGewinnt();
        }
    }
</syntaxhighlight>
# Übernehmt die Methode <code>private void pruefeSiegbedingung()</code> in die Klasse <code>Spiel</code>.
# Ruft die Methode jedes Mal auf, wenn der Angreifer oder der Verteidiger eine seiner Fähigkeiten benutzt hat.
# Ergänzt die Methoden <code>public void angreiferGewinnt()</code> und <code>public void verteidigerGewinnt()</code> in der Klasse <code>Arena</code>. Implementiert sie dann jeweils als Siegerehrung für den Gewinner des Spiels. Dabei könnt ihr kreativ sein. Zum Beispiel könntet ihr das Bild und den Namen des Gewinners groß in der Mitte anzeigen. Tipps dazu findet ihr unten.
{{Aufgabe:End}}
{{Info:Start}}
* Ihr könnt ''Knoten'' oder ''Blätter'' des Spielbaums ausblenden, indem ihr die Methode [https://docs.engine-alpha.org/v3.2.0/ea/Raum.html#sichtbarSetzen-boolean- <code>sichtbarSetzen(boolean pSichtbarkeit)</code>] mit dem Wert <code>false</code> auf dem Objekt aufruft.
* Ihr könnt Elemente mit der Methode [https://docs.engine-alpha.org/v3.2.0/ea/Raum.html#positionSetzen-float-float- <code>positionSetzen(float pX, float pY)</code>] an eine neue Position verschieben.
* Ihr könnt den Text der <code>Anzeige</code> mit <code>setText(String pText)</code> verändern.
* Ihr könnt die
* Ihr könnt komplett neue <code>Bild</code>-, <code>Text</code>- oder Form-Objekte erzeugen.
* Ihr könnt die Musik verändern (dazu müsst ihr aber noch bis zum {{Pfad|16|nächsten Schritt}} warten. Dort lernt ihr, wie man Sounds benutzt.
* Die Knoten des Spielbaums haben noch [https://docs.engine-alpha.org/v3.2.0/ea/Knoten.html andere Methoden, die hilfreich sein könnten].
 
[[Bild:EA siegerehrung.jpg|center|600px]]
{{Info:End}}
{{Lösung:Start|Eine mögliche Lösung}}
<syntaxhighlight lang="java">
    public void angreiferGewinnt() {
        anzeige.setText(angreifer.getName() + " hat gewonnen.");
        bildVerteidiger.sichtbarSetzen(false);
        bildAngreifer.positionSetzen(205, 5);
        lebenAngreifer.sichtbarSetzen(false);
        lebenVerteidiger.sichtbarSetzen(false);
        auswahl.sichtbarSetzen(false);
    }
 
    public void verteidigerGewinnt() {
        anzeige.setText(verteidiger.getName() + " hat gewonnen.");
        bildAngreifer.sichtbarSetzen(false);
        bildVerteidiger.positionSetzen(205, 5);
        lebenAngreifer.sichtbarSetzen(false);
        lebenVerteidiger.sichtbarSetzen(false);
        auswahl.sichtbarSetzen(false);
    }
</syntaxhighlight>
{{Lösung:End}}
8.581

Bearbeitungen