diff --git a/README.md b/README.md index 299b15b..3da508e 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,10 @@ Beim Bewegen aus dem Spielfeld heraus in die Richtungen Links und Oben erscheint Code um einen Stein am oberen Spielfeldrand erscheinen zu lassen funktioniert noch nicht. +### 30.9.2026 + +Beeren spawnen jetzt am oberen Spielfeldrand und sollten runterfallen, aber das Feld füllt sich leider komplett mit Beeren. Trotzdem kann man die Beeren einsammeln und Idee zum Punkte zählen habe ich auch. + ## Bildquellen [Grass Image by macrovector on Freepik](https://www.freepik.com/free-vector/seamless-green-grass-pattern_13187581.htm#query=grass%20texture&position=0&from_view=keyword&track=ais&uuid=c689b011-652b-4ad1-a90a-bf3c50762622) diff --git a/meinspiel.py b/meinspiel.py index 81939a8..00a0bbc 100644 --- a/meinspiel.py +++ b/meinspiel.py @@ -1,6 +1,6 @@ import copy import pygame -import random +import random import copy class MeinSpiel: @@ -15,7 +15,39 @@ class MeinSpiel: def anfangsKonfiguration(self): self.spielfeld[0][13]=0 - + + def erstelle_neues_objekt(self): + # zufällige x Koordinate am oberen Spielfeldrand + zufall_x = random.randint(0, len(self.spielfeld)- 1) + + #nur wenn das Feld frei ist spawnen + if self.spielfeld[zufall_x][0] == 2: + self.spielfeld[zufall_x][0] = 3 + + def objekt_fallen_lassen(self): + kontrollfeld = copy.deepcopy(self.spielfeld) + max_x = len(self.spielfeld) + max_y = len(self.spielfeld[0]) + + #von unten nach oben durch das Feld= Objekte rutschen nicht im selben Durchlauf nach unten + for x in range(max_x): + for y in range(max_y - 1, -1, -1): + if self.spielfeld[x][y] == 2:#Objedkt gefunden + + #Check 1: wird der Boden erreicht? + if y == max_y - 1: + kontrollfeld[x][y] = 2 # Objekt löschen + + #Check 2: wird Figur getroffen + elif self.spielfeld[x][y +1] == 0: + kontrollfeld[x][y] = 2 #Objekt verschwindet + # self.punkte += 1 # Punkt kommt dazu + # print(self.punkte) + #fällt ganz normal + elif self.spielfeld[x][y + 1] == 2: + kontrollfeld[x][y + 1] = 3 + kontrollfeld[x][y] = 2 + self.spielfeld = kontrollfeld # for i in range(3): # x = random.randint(0, len(self.spielfeld) - 1) # y = random.randint(0, len(self.spielfeld) - 1) @@ -28,6 +60,8 @@ class MeinSpiel: def tasteGedrueckt(self, taste): kontrollfeld = copy.deepcopy(self.spielfeld) + max_x = len(self.spielfeld) + max_y = len(self.spielfeld[0]) if pygame.K_p == taste : print("spawn") @@ -69,6 +103,13 @@ class MeinSpiel: self.spielfeld = kontrollfeld + + + + + + + #def anfangsKonfiguration(self): # self.spielfeld[1][13] = 0 diff --git a/starten.py b/starten.py index ad1d976..f8d34e2 100644 --- a/starten.py +++ b/starten.py @@ -1,4 +1,5 @@ # Importieren u. initialisieren der Pygame-Bibliothek +import sys from meinspiel import MeinSpiel import pygame from pygame.locals import * @@ -27,8 +28,11 @@ fenster = pygame.display.set_mode((Breite, Hoehe)) pygame.display.set_caption("Mein erstes Spiel") clock = pygame.time.Clock() +frame_zaehler = 0 + # Schleife Hauptprogramm while True: + frame_zaehler += 1 # Überprüfen, ob Nutzer eine Aktion durchgeführt hat for event in pygame.event.get(): # Beenden bei [ESC] oder [X] @@ -43,6 +47,11 @@ while True: for y in range(FelderY): fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel)) + #Spawn und automatische Bewegung + if frame_zaehler % 50 == 0: + meinSpiel.erstelle_neues_objekt() + meinSpiel.objekt_fallen_lassen() + # Spielfeld/figuren zeichnen # Fenster aktualisieren