23.09.2026

This commit is contained in:
alstergym
2026-09-23 11:06:51 +02:00
parent 059f4e6637
commit f5deb50364
180 changed files with 199 additions and 150 deletions
+169 -67
View File
@@ -1,98 +1,200 @@
import copy
import pygame
import random
from time import sleep
from typing import Literal
class MeinSpiel:
bilder = ["Bilder/background_grid.png","Bilder/Hase.jpg", "Bilder/haha.jpeg", "Bilder/char_1.png"]
spielkarten = []
spielkartentypen = ["club", "diamond", "heart", "spade"]
bilder = ["Bilder/blackfhd.png","Bilder/weiss60.png", "Bilder/gelb60.png"]
spielfeld = []
deinDeck = []
comDeck = []
richtung = 0
richtung_y = 0
alter_hintergrund = 0
punkte1 = 0 # Punkte des Spieler 1
punkte2 = 0 # Punkte des Spieler 2
def __init__(self, felderX, felderY):
for x in range(felderX):
self.spielfeld.append([])
for y in range(felderY):
self.spielfeld[x].append(0)
def anfangsKonfiguration(self, card_style = "solitaire"):
self.spielkarten.append(f"Bilder/Standard52Cards/{card_style}/individual/card back/card_back.png") # Kartenhintergrund immer als erstes geladen
for type in self.spielkartentypen:
for i in range(12):
self.spielkarten.append(f"Bilder/Standard52Cards/{card_style}/individual/{type}/{i+1}_{type}.png") # i+1 weil python bei 0 beginnt, aber beim filename bei 1 begonnen wird
print(self.spielkarten)
print(len(self.spielkarten))
spielkartenbilder = []
for fname in self.spielkarten:
spielkartenbilder.append(pygame.image.load(fname))
self.spielkarten = spielkartenbilder
print(self.spielkarten)
return self.spielkarten
def anfangsKonfiguration(self):
# könnte man theoretisch auf mit farben machen, damit dann weniger geladen werden muss -> lädt schneller
self.spielfeld[1][5] = 1
self.spielfeld[1][4] = 1 # spieler 1 / Linker Spieler
self.spielfeld[1][6] = 1
self.spielfeld[13][4] = 1
self.spielfeld[13][5] = 1 # Spieler 2 / Com 1 / Rechter Spieler
self.spielfeld[13][6] = 1
self.spielfeld[7][5] = 2 # ball
def tasteGedrueckt(self, taste):
print(f"{taste} gedrückt")
if taste == 97:
print(self.spielfeld)
elif taste == 113:
pygame.quit()
elif taste == 114:
self.deinDeck = self.generateYourCards(True)
print(self.deinDeck)
self.generateComCards()
print(self.deinDeck)
print(self.comDeck)
elif taste == 116: # Taste T
self.starte_spiel(neue_punkte=True)
elif taste == 115: # Taste S
self.bewegeSpieler(2, "spieler1")
elif taste == 119: # Taste W
self.bewegeSpieler(1, "spieler1") # 1 ist nach oben, 2 nach unten
elif taste == 1073741906: # Pfeiltaste_Hoch
self.bewegeSpieler(1, "spieler2")
elif taste == 1073741905: # Pfeiltaste_Runter
self.bewegeSpieler(2, "spieler2")
def starte_spiel(self, neue_punkte = False):
self.richtung = random.randint(1, 2) # 1 = linke Spielhälfte / 2 = rechte Spielhälfte
newspielfeld = []
for x in range(15): # Es gibt 15 Felder (900/60)
newspielfeld.append([])
for y in range(15):
newspielfeld[x].append(0)
newspielfeld[1][5] = 1
newspielfeld[1][4] = 1 # spieler 1 / Linker Spieler
newspielfeld[1][6] = 1
def generateYourCards(self, new = False):
# if not new and self.comDeck != []:
# for i in self.comDeck: # 5 karten entfernen, die schon genommen wurden
# self.spielkarten.remove[i]
while len(self.deinDeck) != 5:
if new == True:
self.spielkarten = self.anfangsKonfiguration()
choice = random.choice(self.spielkarten)
if choice == self.spielkarten[0] or choice in self.deinDeck: continue
self.deinDeck.append(choice)
self.spielkarten.remove(choice)
newspielfeld[13][4] = 1
newspielfeld[13][5] = 1 # Spieler 2 / Com 1 / Rechter Spieler
newspielfeld[13][6] = 1
newspielfeld[7][5] = 2 # ball
self.spielfeld = newspielfeld
if neue_punkte:
self.punkte1 = 0
self.punkte2 = 0
#elf.ahhh_spiel(self.richtung)
def generateComCards(self, new = False):
# if not new and self.deinDeck != []:
# for i in self.deinDeck: # 5 karten entfernen, die schon genommen wurden
# print(i)
# self.spielkarten.remove[i]
while len(self.comDeck) != 5:
choice = random.choice(self.spielkarten)
if choice in self.deinDeck or choice == self.spielkarten[0]:
continue
self.comDeck.append(choice)
self.spielkarten.remove(choice)
def bewegeball(self):
if self.richtung == 0: return
stoppe_suche = False
for x in range(len(self.spielfeld)):
for y in range(len(self.spielfeld)):
if self.spielfeld[x][y] == 2:
try:
spieler_x = x+1 if self.richtung == 2 else x-1
spieler_y = y
# gucken ob links/rechts ein spieler ist
if self.spielfeld[x+1][y] == 1 or self.spielfeld[x-1][y] == 1:
self.richtung = 1 if self.richtung == 2 else 2
self.richtung_y = random.randint(-1, 1) # -1 ist nach oben 1 nach unten
self.spielfeld[x][y] = self.alter_hintergrund
if self.richtung == 2:
self.alter_hintergrund = self.spielfeld[x+1][y]
self.spielfeld[x+1][y+self.richtung_y] = 2
elif self.richtung == 1 and x-1 != -1:
self.alter_hintergrund = self.spielfeld[x-1][y]
self.spielfeld[x-1][y+self.richtung_y] = 2
elif x-1 == -1: self.richtung = 2; self.spielfeld[x][y] = 2 # Später Punktesystem!
print(x, y)
self.guckeObAmRand(x, y)
def update_comCardDeck(self, fenster, spielkartenbilder):
comcard_x_plus = 0
for i in self.comDeck:
fenster.blit(spielkartenbilder[0], (394+comcard_x_plus, 50))
comcard_x_plus+=100
stoppe_suche = True
sleep(0.1)
except IndexError:
# Wenn am Rand des spielfelds, muss gucken ob punkt gibt oder von wand abprallt
print(x+1)
print(x-1)
print(y-1)
print(y+1)
# if y+1 == 14 or y-1 == -1:
# self.richtung_y = -1 if self.richtung_y == -1 else 1
self.guckeObAmRand(x, y, fehler=True)
def showCards(self, fenster, spielkartenbilder):
deck = self.deinDeck
try:
fenster.blit(self.deinDeck[0], (394, 550)) # deine 5 karten
fenster.blit(self.deinDeck[1], (494,550))
fenster.blit(self.deinDeck[2], (594,550))
fenster.blit(self.deinDeck[3], (694,550))
fenster.blit(self.deinDeck[4], (794,550))
fenster.blit(spielkartenbilder[0], (350,300)) # kartenstapel
except TypeError:
pass
print(len(spielkartenbilder))
if stoppe_suche: break
if stoppe_suche: break
return spieler_x, spieler_y
def guckeObAmRand(self, x, y, fehler = False):
if y+1 == 14 or y-1 == 0 and self.richtung_y == -1:
print("aaaaaaaaaaa")
print(y+1)
print(self.richtung_y)
print("---------")
self.richtung_y = -1 if self.richtung_y == 1 else 1
elif x+1 == 14:
self.punkte1 +=1
self.starte_spiel()
elif x-1 == 0:
self.punkte2 +=1
self.starte_spiel()
if fehler:
self.spielfeld[x][y] = 2 # Später Punktesystem!
self.richtung = 1 if self.richtung == 2 else 2
self.richtung_y = random.randint(-1, 1)
def bewegeSpieler(self, richtung, spieler: Literal["spieler1", "spieler2"]):
x = 1 if spieler == "spieler1" else 13
stoppe_suche = False
for y in range(len(self.spielfeld)):
if self.spielfeld[x][y] == 1:
try:
# gucken ob links/rechts ein spieler ist
#if self.spielfeld[x][y+1] == 1 or self.spielfeld[x][y-1] == 1:
#richtung = 1 if richtung == 2 else 2
if richtung == 2:
self.spielfeld[x][y] = self.alter_hintergrund
self.alter_hintergrund = self.spielfeld[x+1][y]
self.spielfeld[x][y+3] = 1
elif richtung == 1:
self.spielfeld[x][y+2] = self.alter_hintergrund
self.alter_hintergrund = self.spielfeld[x-1][y]
self.spielfeld[x][y-1] = 1
elif y-1 == 0: richtung = 2; self.spielfeld[x][y] = 1 # Später Punktesystem!
spieler_x, spieler_y = y+1 if richtung == 2 else y-1, y
stoppe_suche = True
except IndexError:
self.spielfeld[x][y] = 1 # Später Punktesystem!
richtung = 1 if richtung == 2 else 2
if stoppe_suche: break
class ComLogic:
def __init__(self):
pass # load coms inventory