diff --git a/pygame-test.py b/pygame-test.py index 6245e02..5f93cf1 100644 --- a/pygame-test.py +++ b/pygame-test.py @@ -32,6 +32,7 @@ class GameObject(): __hide = False __collided = False __is_player = False + __has_follower = False __movedirection = {"up":False, "down":False, "left":False, "right":False} @@ -103,6 +104,15 @@ class GameObject(): def get_movespeed(self): return self.__movespeed + def get_playermovedirection(self): + return self.__movedirection + + def has_follower(self): + return self.__has_follower + + def set_follower(self): + self.__has_follower = True + def __updatepos(self, posx, posy): if posx == (self.__last_pos_x + self.__size_rect["x"]): self.__last_pos_x = self.__pos_x if posy == (self.__last_pos_y + self.__size_rect["y"]): self.__last_pos_y = self.__pos_y @@ -124,10 +134,6 @@ class GameObject(): print("Kollision\n") #Funktioniert für das erste! self.set_collided() #self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject - - def draw_follower(self, Player): - """Für alle Collidierten Gameobjects""" - #print("Zeichne verfolger") def hide(self): if(self.__hide != True): @@ -135,6 +141,27 @@ class GameObject(): self.__hide = True """TODO: Delete obeject function""" + 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] + print(pos) + print(self.get_position()) + + +class Playerfollower(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 start_game(): menu.disable() return 0 @@ -156,18 +183,6 @@ def spawn_entities(x:int): 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() - - for y in Objects: - y:GameObject - print(y.get_position()) - if(y.get_position()[0] == Entity.get_position()[0] or - y.get_position()[0] <= Entity.get_position()[0]+10 or - y.get_position()[0] <= Entity.get_position()[0]-10): - print("Überlagerung") - Objects.remove(y) - #if(pygame.rect.Rect.colliderect(y)): - # print("Kollision, neuberechnung") - #Neuberechnung der Cluster, falls Kollision mit bestehenden Clustern vorliegt Objects.append(Entity) count += 1 for x in Objects: @@ -222,6 +237,8 @@ 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 + #Fenster-Hauptschleife while active == True: MAINSCREEN.fill((255,255,255)) @@ -246,25 +263,54 @@ while active == True: Player.draw() Player.move(5) + + #Spawns the Entities count_hidden_entities = 0 + first_follower:GameObject + last_object:GameObject = None for y in spawned_entities: y:GameObject - y.draw() - y.collide(Player) + if(y.is_collided() == True): - y.hide() + #Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern + #y.hide() count_hidden_entities += 1 - Player.draw_follower(y) - #spawned_entities.remove(y) + print("This Object: ", end=" ") + print(y) + print("Last Objetct: ", end=" ") + if(last_object): + print("Last Objetct: ", end=" ") + print(last_object) + + if(not Player.has_follower()): + Player.set_follower() + first_follower = y + last_object = y + else: + last_object = y + if(last_object): + y.set_position(last_object.get_position(), Player.get_playermovedirection()) + pass + + + y.set_position(Player.get_position(), Player.get_playermovedirection()) + last_object = y + + y.draw() + y.collide(Player) if(count_hidden_entities == count_spawend_enities): print("WIN!!!") menu.enable() menu.add.label("WIN", "win", 10) menu.mainloop(MAINSCREEN) - #break - - pygame.draw.line(MAINSCREEN, (0,0,0), (10,0),(10,MAINSCREEN_SIZE[1])) + break + + """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]))""" if(x == 0): for y in spawned_entities: