8.581
Bearbeitungen
Jneug (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Jneug (Diskussion | Beiträge) |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
== Projektziel == | == Projektziel == | ||
Programmiere das Spiel [http://www.matheundfraktale.de/MathemSpielereien/LightsOut/LightsOut.php LightsOut] mit Python. Nutze das TigerJython als Entwicklungsumgebung. | Programmiere das Spiel [http://www.matheundfraktale.de/MathemSpielereien/LightsOut/LightsOut.php LightsOut] mit Python. Nutze das TigerJython als Entwicklungsumgebung. | ||
[[Bild:20210526204049 TigerJython.gif|center]] | |||
== GameGrid == | == GameGrid == | ||
Zeile 13: | Zeile 15: | ||
from gamegrid import * | from gamegrid import * | ||
# Wird aufgerufen, wenn die Maus im Fenster geklickt wird. | |||
# e.getX() und e.getY() sind die Koordinaten des Pixels, der angeklickt wurde. | |||
def mausklick(e): | def mausklick(e): | ||
loc = toLocation(e.getX(), e.getY()) | |||
# Hier die Aktionen bei Mausklick programmieren | |||
# 3x3 Quadrate mit der Kantenlänge 50. | # 3x3 Quadrate mit der Kantenlänge 50. | ||
# Das Gitter wird in grau (gray) gezeichnet und Steuerungselemente werden ausgeblendet (False). | # Das Gitter wird in grau (gray) gezeichnet und Steuerungselemente werden ausgeblendet (False). | ||
# Bei Mausklicks wird die Funktion "mausklick" aufgerufen. | # Bei Mausklicks wird die Funktion "mausklick" aufgerufen. | ||
makeGameGrid(3, 3, 50, Color.gray, False, mousePressed = | makeGameGrid(3, 3, 50, Color.gray, False, mousePressed = mausklick) | ||
# Hole den Hintergrund, um damit zu arbeiten | # Hole den Hintergrund, um damit zu arbeiten | ||
Zeile 32: | Zeile 37: | ||
Du kannst dir die Hilfe zu GameGrid in TigerJython anzeigen lassen (wie die Hilfe zu GTurtle). Um "LightsOut" zu implementieren, reichen aber theoretisch diese Funktionen: | Du kannst dir die Hilfe zu GameGrid in TigerJython anzeigen lassen (wie die Hilfe zu GTurtle). Um "LightsOut" zu implementieren, reichen aber theoretisch diese Funktionen: | ||
; <code>makeGameGrid(Spaltenzahl, Zeilenzahl, Kantenlänge, Color, Steuerung, mousePressed=Funktionsname)</code> | |||
: Erzeugt ein Spielfenster mit <code>Spaltenzahl</code> mal <code>Zeilenzahl</code> Quadraten der Größe <code>Kantenlänge </code>. Das Gitternetz wird in der Farbe <code>Color</code> gezeichnet (um kein Gitter zu zeichnen, kann <code>None</code> angegeben werden). Steuerung ist ein Wahrheitswert (<code>True</code> oder <code>False</code>) der angibt, ob im Spielfenster Stuerungselement angezeigt werden. Mit <code>mousePressed</code> wird eine Funktion angegeben, die aufgerufen wird, wenn mit der Maus in das Fenster geklickt wird. | |||
; <code>bg = getBg()</code> | ; <code>bg = getBg()</code> | ||
: Speichert den Hintergrund in der Variablen <code>bg</code>. Der Hintergrund hat verschiedene Funktionen, die mit <code>bg.funktionsname()</code> aufgerufen werden können: | : Speichert den Hintergrund in der Variablen <code>bg</code>. Der Hintergrund hat verschiedene Funktionen, die mit <code>bg.funktionsname()</code> aufgerufen werden können: | ||
:; <code>bg.fillCell(Location, Color)</code> | :; <code>bg.fillCell(Location, Color)</code> | ||
:: Färbt das Quadrat an der Position <code>Location</code> in der Farbe <code>Color</code> ein. | :: Färbt das Quadrat an der Position <code>Location</code> in der Farbe <code>Color</code> ein. | ||
:; <code>bg.drawGridLines(Color)</code> | |||
:: Zeichnet die Gitternetzlinien in der Farbe <code>Color</code>. | |||
:; <code>bg.getColor(Location)</code> | |||
:: Ermittelt die Farbe des Quadrats an der Position <code>Location</code>. | |||
; <code>loc = Location(i, j)</code> | |||
: Speichert eine Position mit der Spaltennummer <code>i</code> und der Zeilennummer <code>y</code> in der Variablen <code>loc</code>. Positionen können für verschiedne andere Funktionen als Parameter benutzt werden. | |||
:; <code>loc.x</code> | |||
:: Die x-Koordinate der Position. | |||
:; <code>loc.y</code> | |||
:: Die y-Koordinate der Position. | |||
; <code>toLocation(x, y)</code> | |||
: Ermittelt für den Pixel an der Koordinate <code>x</code>, <code>y</code> die Position, in der der Pixel liegt. | |||
; <code>refresh()</code> | |||
: Aktualisiert den Zeichenbereich und zeichnet alle Elemente neu. | |||
; <code>Color.green</code> | |||
: Die Farbe "Grün". <code>green</code> kann durch andere (englische) Farbnamen ersetzt werden (<code>red</code>, <code>blue</code>, ...). Farben können wie gewohnt mit <code>==</code> verglichen werden (z.B. <code>Color.green == Color.red</code> ist <code>False</code>). | |||
; <code>getGridColor()</code> | |||
: Die Farbe der Gitternetzlinien (die zu Beginn an <code>makeGamegrid</code> übergeben wurden). |
Bearbeitungen