import copy import pygame import random import math import time class MeinSpiel: bilder = ["Bilder/Spielfiguren/spielfigur-rot.png", "Bilder/Spielfiguren/spielfigur-gelb.png", "Bilder/Spielfiguren/spielfigur-gruen.png", "Bilder/Spielfiguren/spielfigur-blau.png"] wuerfel = [f"Bilder/wuerfel-{i}.png" for i in range(1, 7)] # hintergrundbilder = [] # spielfeld = [] # spielfiguren = [] # figur_entfernt = False # zeilenversetzt = False # am_zug = 0 # bewegungsrichtung = {0: "rechts", 1: "rechts", 2: "rechts", 3: "rechts"} # zufallswert = int() # wuerfelBildAnzeigen = False def __init__(self, felderX, felderY): self.felderX, self.felderY = felderX, felderY self.hintergrundbilder = [] self.spielfeld = [] self.spielfiguren = [] self.am_zug = 0 self.zufallswert = 0 self.animationsWerte = [] self.wuerfelBildAnzeigen = False for x in range(felderX): self.spielfeld.append([]) self.spielfiguren.append([]) for y in range(felderY): self.hintergrundbilder.append( f"Bilder/Hintergrundpixel/background_{x}-{y}.jpg") self.spielfeld[x].append(7 * x + y) self.spielfiguren[x].append([]) self.pfad = [] for y in range(felderY): if y <= 4: if y % 2 == 0: bewegungsrichtung = range(felderX) else: bewegungsrichtung = range(felderX - 1, -1, -1) # range funktioniert als range(start, stop, step), bei stop 0 wird die 0 selbst nicht mehr mitgezählt! -> deshalb -1 for x in bewegungsrichtung: self.pfad.append((x, y)) self.positionen = [0, 0, 0, 0] def anfangsKonfiguration(self): # self.spielfiguren[0][0].append(0) # self.spielfiguren[0][0].append(1) # self.spielfiguren[0][0].append(2) # self.spielfiguren[0][0].append(3) for figur in range(4): x, y = self.pfad[0] self.spielfiguren[x][y].append(figur) def animateWuerfel(self): for n in range(20): self.animationsWerte.append(random.randint(1, 6)) for i in range(20): time.sleep(1) self.wuerfelBildAnzeigen = i self.wuerfelBildAnzeigen = True def tasteGedrueckt(self, taste): if taste != pygame.K_SPACE and taste != "mouseevent": return self.zufallswert = random.randint(1, 6) self.wuerfelBildAnzeigen = True figur = self.am_zug start = self.positionen[figur] #print(f"start: {start}\nself.zufallswert: {self.zufallswert}") ziel = (start + self.zufallswert, len(self.pfad) - 1) print(self.pfad) # print(f"{self.pfad[start + self.zufallswert][0]}") # print(f"math: {math.floor(start + self.zufallswert / 7)}") # print(f"ziel_y: {self.pfad[start + self.zufallswert][1]}") start_x, start_y = self.pfad[start] self.spielfiguren[start_x][start_y].remove(figur) print(f"self.positionen[figur]: {self.positionen[figur]}, {figur}") print(f"Hier: {start_x} {start_y}") try: ziel_x = self.pfad[start + self.zufallswert][0] ziel_y = self.pfad[start + self.zufallswert][1] except IndexError: ziel_x = self.pfad[len(self.pfad) - 1][0] ziel_y = self.pfad[len(self.pfad) - 1][1] print(f"Ziel-Koordinaten: {ziel_x} {ziel_y}") self.spielfiguren[ziel_x][ziel_y].append(figur) self.positionen[figur] = ziel[0] print(f"Figur {figur}: von {start} nach {ziel} (Gewürfelt: {self.zufallswert})") self.am_zug = (self.am_zug + 1) % 4 # mit Modulo-Operator ist (3 + 1) % wieder 0 def mouseButtonClick(self, x, y): if x >= 270 and y >= 770 and x <= 490 and y <= 830: self.tasteGedrueckt("mouseevent")