Workshop CMU - ein eigenes Spiel

In diesem Workshop zeigen wir Euch den Sandkasten der CMU Academy, und wie ihr diesen Online-Python-Editor für Eure eigenen Programmierideen verwenden könnt.

Links

Die CS Academy der Carnegy Mellon University (CMU)
https://eu.academy.cs.cmu.edu

Ein Damespiel selber bauen

Wir wollen das beliebte Brettspiel "Dame" erstellen. Wir benötigen hierfür ein Schachbrett und 12 Spielfiguren in jeweils weiß und schwarz.

Das Brettspiel Dame

Hinweis 1: Listen und die range-Funktion
Python kennt einige zusammengesetzte Datentypen, die dazu dienen, zusammengehörige Datenwerte zu gruppieren. Ein solcher Datentyp ist Liste. Listen haben die Form [a, b, c, ..], wobei [] für eine leere Liste steht.
y = [1,3,5,7]
Mit der range-Funktion kann eine Liste erzeugt werden: range(start, ende, schrittlänge)
print(list(range(1,10,2)))

Hinweis 2: Schleifen
Mit Schleifen kann ein Anweisungsblock mehrmals hintereinander ausgeführt werden:
    
    for i in range(1,10):
        print(i)
    

Aufgabe 1: Das Spielbrett

Zunächst soll schachbrettartig das Spielfeld angelegt werden. Füge den Quellcode deinem CMU-Sandkasten hinzu:


sQuadrat = 50
spielfeld = []

def zeichne_spielfeld():
    for x in range(0,sQuadrat*8,sQuadrat):
        zeile = []
        for y in range(0,sQuadrat*8,sQuadrat):
            r = Rechteck(x, y, sQuadrat, sQuadrat, füllen="weiß", rand="schwarz")
            zeile.append(r)
        spielfeld.append(zeile)
                
zeichne_spielfeld()
                        

2. Das Schachbrettmuster

Wenn du die Funktion zeichne_schachbrettmuster hinzufügst, dann werden die Felder eingefärbt:


def zeichne_schachbrettmuster():
    for i in range(8):
        for j in range(8):
            if i % 2 + j % 2 == 1:
                spielfeld[i][j].fill = "sienna"
            else:
                spielfeld[i][j].fill = "tan"

zeichne_schachbrettmuster()
                        

3. Die Spielfiguren

Nun zeichnen wir die Damefiguren:


def zeichne_figuren():
    for i in range(8):
        for j in range(3):
            if i % 2 + j % 2 == 1:
                kreis = Kreis(i*50+25,j*50+25,20)
                figuren.add(kreis)
        for k in range(5,8):
            if i % 2 + k % 2 == 1:  
                kreis = Kreis(i*50+25,k*50+25,20, füllen="maisSeide")
                figuren.add(kreis)

figuren = Gruppe()
zeichne_figuren()
                        

4. Die Figuren bewegen

Wir wollen, dass sich die Figuren bewegen können. Wenn ein Spielstein mit der Maus von einem Feld auf ein anderes gezogen wird, dann soll der Stein auf dieses Feld wechseln.


def beiMaustasteHoch(mausX, mausY):
    indexX = mausX // 50
    indexY = mausY // 50
    if figur != None:
        figur.mitteX = indexX * 50 + 25
        figur.mitteY = indexY * 50 + 25

def beiMaustasteRunter(mausX, mausY):
    global figur
    figur = figuren.treffenTest(mausX, mausY)
                        

Aufgaben
1. Welche Probleme siehst du bei der derzeitigen Implementierung des Damespiels?
2. Wie können diese behoben werden?