From e3193695c3fac4f3200ca875def442096659e55f Mon Sep 17 00:00:00 2001 From: administrator Date: Mon, 1 Jan 2024 12:11:05 +0100 Subject: [PATCH] Some changes in class Follower and code cleanup --- pygame-test.py | 122 ++++++++++++++++++------------------------------- 1 file changed, 45 insertions(+), 77 deletions(-) diff --git a/pygame-test.py b/pygame-test.py index 2df70b0..f68e9b9 100644 --- a/pygame-test.py +++ b/pygame-test.py @@ -95,7 +95,14 @@ class GameObject(): else: self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self.__pos_x, self.__pos_y,self.__size_rect["x"],self.__size_rect["y"]]) - def get_position(self): + def get_name(self, debug=False): + if(debug): + print(self.__name) + return self.__name + + def get_position(self, debug=False): + if(debug): + print((self.__pos_x, self.__pos_y)) return (self.__pos_x, self.__pos_y) def get_rect(self): @@ -145,11 +152,31 @@ class GameObject(): #print(pos) #print(self.get_position()) - -class Playerfollower(GameObject): +#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 set_position(self, pos:tuple, playermovedirection:list): + + if(playermovedirection["up"]): + self.__pos_y = pos[1]+60 + self.__pos_x = pos[0] + if(playermovedirection["down"]): + self.__pos_y = pos[1]-60 + self.__pos_x = pos[0] + if(playermovedirection["left"]): + self.__pos_x = pos[0]+60 + self.__pos_y = pos[1] + if(playermovedirection["right"]): + self.__pos_x = pos[0]-60 + self.__pos_y = pos[1] + def start_game(): menu.disable() return 0 @@ -170,74 +197,17 @@ def spawn_entities(x:int): 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_rect = Entity.get_rect() + Entity.get_name(True) Objects.append(Entity) count += 1 for x in Objects: print(x) return list(Objects) -"""def spawn_entities(x:int): - entity_count = x - count = 0 - Objects = list() - print("Erstelle "+str(x)+" Objekte") - while(entity_count != 0): - Entity = GameObject("Entitiy-"+str(count), rand.randint(1,MAINSCREEN_SIZE[0]), rand.randint(1,MAINSCREEN_SIZE[1]), rand.randint(1,15)) - Entity_pos = Entity.get_position() - - if(count == 0): - Objects.append(Entity) - entity_count -= 1 - print("Erstes Objekt erstellt") - else: - for x in Objects: - x:GameObject - #print(Entity_pos) - #print(x.get_position()) - if(Entity_pos[0] <= (x.get_position()[0]-60) or Entity_pos[0] >= (x.get_position()[0] +60)): - if(Entity_pos[1] <= (x.get_position()[1]-60) or (Entity_pos[1] >= x.get_position()[1] +60)): - Objects.append(Entity) - entity_count -= 1 - - - count += 1 - print("Versuch: "+str(count), end="\r") - if(count == 20): break - - return list(Objects)""" - - - - Player = GameObject("Player", 10, 10, 10, is_player=False) background = pygame.surface.Surface((640,480)) -#Behandelt später die Hauptschleife und Klassenobjekte -class Game(): - __state = {"win":False, "lose":False, "paused":False} - def __init__(self) -> None: - pass - -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 set_position(self, pos:tuple, playermovedirection:list): - - if(playermovedirection["up"]): - self.__pos_y = pos[1]+60 - self.__pos_x = pos[0] - if(playermovedirection["down"]): - self.__pos_y = pos[1]-60 - self.__pos_x = pos[0] - if(playermovedirection["left"]): - self.__pos_x = pos[0]+60 - self.__pos_y = pos[1] - if(playermovedirection["right"]): - self.__pos_x = pos[0]-60 - self.__pos_y = pos[1] x = 3600 invert = False @@ -245,7 +215,7 @@ spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObje count_spawend_enities = len(spawned_entities) test_grid_x = MAINSCREEN_SIZE[0]/60 colided_objects = list() - +count_hidden_entities = 0 #Fenster-Hauptschleife while active == True: MAINSCREEN.fill((255,255,255)) @@ -272,8 +242,6 @@ while active == True: Player.move(5) #Spawns the Entities - count_hidden_entities = 0 - for y in spawned_entities: y:GameObject @@ -281,7 +249,7 @@ while active == True: #Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern #y.hide() count_hidden_entities += 1 - colidedobj = Follower(y) + colidedobj = Follower(y.get_name()) colided_objects.append(colidedobj) spawned_entities.remove(y) @@ -299,25 +267,25 @@ while active == True: print(len(colided_objects)) obj1_count = 0 for obj1 in colided_objects: - obj1:Follower Player:GameObject - print(Player.get_position()) - obj1.set_position(Player.get_position(), Player.get_playermovedirection()) - print(obj1.get_position()) - #print(Player.get_playermovedirection()) - obj1.draw() - """Drawing Lines test - pos = 0 - for x in range(20): - pos += 60 - pygame.draw.line(MAINSCREEN, (0,0,0), (pos,0),(pos,MAINSCREEN_SIZE[1]))""" - + 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() pass x -= 1 + """Drawing Lines test + pos = 0 + for x in range(20): + pos += 60 + pygame.draw.line(MAINSCREEN, (0,0,0), (pos,0),(pos,MAINSCREEN_SIZE[1]))""" + #print("Objekt-Koordinaten= X: "+str(rect1.x)+" Y: "+str(rect1.y)+"", end="\r") #Displayflip sorgt dafür, dass das Fenster entsprechend der Tickrate aktualisiert wird