117 lines
4.0 KiB
Python
117 lines
4.0 KiB
Python
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")
|