From a2d56d74e8f5f98ea8eea0ec6d99d0c53379d3e2 Mon Sep 17 00:00:00 2001 From: christian Date: Mon, 1 Jan 2024 13:07:56 +0100 Subject: [PATCH] =?UTF-8?q?TODO=20Hardcopy=20der=20Gameobjects=20calss=20F?= =?UTF-8?q?unktion=20manipuliert=20aktive=20Gameobjekte,=20welche=20mit=20?= =?UTF-8?q?vererbter=20Klasse=20instanziert=20werden=20Grund=20hierf=C3=BC?= =?UTF-8?q?r,=20konnte=20noch=20nicht=20ausfindig=20gemacht=20werden!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pygame-test.py | 65 ++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/pygame-test.py b/pygame-test.py index f68e9b9..73ce7f7 100644 --- a/pygame-test.py +++ b/pygame-test.py @@ -1,6 +1,7 @@ import pygame import pygame_menu import random as rand +from copy import deepcopy pygame.init() MAINSCREEN_SIZE = (1024,768) @@ -25,18 +26,19 @@ class GameObject(): __pos_x = int() __pos_y = int() __color = (0,0,0) - __size_rect = {"x":60, "y":60} + __size_rect = {"x":0, "y":0} __movespeed = int() __rectobjekt = pygame.Rect __surface = MAINSCREEN __hide = False __collided = False __is_player = False + __is_rect = False __has_follower = False __movedirection = {"up":False, "down":False, "left":False, "right":False} - def __init__(self, name:str, posx_init:int=0, posy_init:int=0, move_speed:int=0, is_player:bool = False) -> None: + def __init__(self, name:str, posx_init:int=0, posy_init:int=0, move_speed:int=0, is_player:bool = False, is_rect:bool = True, rect_size:tuple = (10,10)) -> None: self.__name = name self.__pos_x = posx_init self.__pos_y = posy_init @@ -44,6 +46,10 @@ class GameObject(): self.__initial_pos_y = posx_init self.__movespeed = move_speed self.__is_player = is_player + self.__is_rect = is_rect + self.__size_rect["x"] = rect_size[0] + self.__size_rect["y"] = rect_size[1] + #self.__rectobjekt = rect def change_direction(self, direction:dict): @@ -132,7 +138,7 @@ class GameObject(): def set_collided(self): self.__collided = True - def collide(self, GameObject): + def collide(self, GameObject) -> bool: #print(GameObject) #print(GameObject.get_rect()) """TODO: Hitbox with Objectsize""" @@ -140,7 +146,9 @@ class GameObject(): if(pygame.rect.Rect.colliderect(self.__rectobjekt, GameObject.get_rect()) and not self.is_collided()): print("Kollision\n") #Funktioniert für das erste! self.set_collided() + return True #self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject + return False def hide(self): if(self.__hide != True): @@ -148,19 +156,16 @@ class GameObject(): self.__hide = True """TODO: Delete obeject function""" - - #print(pos) - #print(self.get_position()) - #Behandelt später die Hauptschleife und Klassenobjekte class Game(): __state = {"win":False, "lose":False, "paused":False} def __init__(self) -> None: pass #Handles all collided objects an adds it as Playerfollower + class Follower(GameObject): - def __init__(self, name: str, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False) -> None: - super().__init__(name, posx_init, posy_init, move_speed, is_player) + def __init__(self, name: str, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False, is_rect: bool = True, rect_size: tuple = (10, 10)) -> None: + super().__init__(name, posx_init, posy_init, move_speed, is_player, is_rect, rect_size) def set_position(self, pos:tuple, playermovedirection:list): @@ -196,7 +201,7 @@ def spawn_entities(x:int): Objects = list() count = 0 for y in range(x): - Entity = GameObject("Entitiy-"+str(count), rand.randint(1,MAINSCREEN_SIZE[0]), rand.randint(1,MAINSCREEN_SIZE[1]), rand.randint(1,15)) + Entity = GameObject("Entitiy-"+str(count), rand.randint(1,MAINSCREEN_SIZE[0]), rand.randint(1,MAINSCREEN_SIZE[1]), rand.randint(1,15), is_rect=True, rect_size=(100,100)) Entity.get_name(True) Objects.append(Entity) count += 1 @@ -204,7 +209,7 @@ def spawn_entities(x:int): print(x) return list(Objects) -Player = GameObject("Player", 10, 10, 10, is_player=False) +Player = GameObject("Player", 10, 10, 10, is_player=False, is_rect=True, rect_size=(20,20)) background = pygame.surface.Surface((640,480)) @@ -212,10 +217,11 @@ background = pygame.surface.Surface((640,480)) x = 3600 invert = False spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObjekten -count_spawend_enities = len(spawned_entities) -test_grid_x = MAINSCREEN_SIZE[0]/60 -colided_objects = list() count_hidden_entities = 0 +count_spawend_enities = len(spawned_entities) +print("Es wurden " + str(count_spawend_enities)+ " Objekte gespawnt") +colided_objects = list() + #Fenster-Hauptschleife while active == True: MAINSCREEN.fill((255,255,255)) @@ -240,22 +246,23 @@ while active == True: Player.draw() Player.move(5) + print("Aktuell kollidierte Objekte: ", str(count_hidden_entities)) #Spawns the Entities for y in spawned_entities: y:GameObject - + y.draw() if(y.is_collided() == True): #Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern - #y.hide() - count_hidden_entities += 1 - colidedobj = Follower(y.get_name()) - colided_objects.append(colidedobj) - spawned_entities.remove(y) - + y.hide() + pass if(y.is_collided() == False): - y.draw() - y.collide(Player) + if(y.collide(Player)): + count_hidden_entities += 1 + #TODO Hardcopy der Gameobjects calss // Funktion manipuliert aktive Gameobjekte, welche mit vererbter Klasse instanziert werden + #Grund hierfür, konnte noch nicht ausfindig gemacht werden! + colided_objects.append(Follower(y.get_name(), is_rect=True, rect_size=(50,50))) + if(count_hidden_entities == count_spawend_enities): print("WIN!!!") @@ -263,17 +270,7 @@ while active == True: menu.add.label("WIN", "win", 10) menu.mainloop(MAINSCREEN) break - - print(len(colided_objects)) - obj1_count = 0 - for obj1 in colided_objects: - Player:GameObject - obj1:Follower - obj1.set_position((1,1), Player.get_playermovedirection()) - obj1.get_position(True) - obj1.get_name(True) - #obj1.get_name(True) - + if(x == 0): for y in spawned_entities: y.hide()