diff --git a/pygame-test.py b/pygame-test.py index fa9be45..d0d5b55 100644 --- a/pygame-test.py +++ b/pygame-test.py @@ -3,7 +3,8 @@ import pygame_menu import random as rnd pygame.init() -MAINSCREEN = pygame.display.set_mode((640,480)) +MAINSCREEN_SIZE = (1024,768) +MAINSCREEN = pygame.display.set_mode(MAINSCREEN_SIZE) pygame.display.set_caption("Testgame") WEISS = ( 255, 255, 255) @@ -22,11 +23,11 @@ class GameObject(): __pos_x = int() __pos_y = int() __color = (0,0,0) - __rect_size = [] + __size_rect = {"x":50, "y":50} __movespeed = int() __rectobjekt = pygame.Rect __surface = MAINSCREEN - __removed = False + __hide = False __collided = False __movedirection = {"up":False, "down":False, "left":False, "right":False} @@ -38,10 +39,6 @@ class GameObject(): self.__movespeed = move_speed #self.__rectobjekt = rect - def __del__(self): - #print("\nKlasse gelöscht", end="\n") - pass - def change_direction(self, direction:dict): if(direction): for key in self.__movedirection.keys(): @@ -57,32 +54,35 @@ class GameObject(): if(self.__movedirection['up']): if(not speed): self.__pos_y -= MOVE_SPEED else: self.__pos_y -= speed[0] - if(self.__pos_y <= -100): - self.__pos_y += 580 + if(self.__pos_y <= -self.__size_rect["y"]): + self.__pos_y = MAINSCREEN_SIZE[1] elif(self.__movedirection['down']): if(not speed): self.__pos_y += MOVE_SPEED else: self.__pos_y += speed[0] - if(self.__pos_y >= (self.__surface.get_size()[1])): self.__pos_y = -100 + if(self.__pos_y >= MAINSCREEN_SIZE[1]): + self.__pos_y = -self.__size_rect["y"] elif(self.__movedirection['left']): if(not speed): self.__pos_x -= MOVE_SPEED else: self.__pos_x -= speed[0] - if(self.__pos_x <= -100): self.__pos_x = 680 + if(self.__pos_x <= -self.__size_rect["x"]): + self.__pos_x = MAINSCREEN_SIZE[0] elif(self.__movedirection['right']): if(not speed): self.__pos_x += MOVE_SPEED else: self.__pos_x += speed[0] - if(self.__pos_x >= (self.__surface.get_size()[0])): self.__pos_x = -100 + if(self.__pos_x >= MAINSCREEN_SIZE[0]): + self.__pos_x = -self.__size_rect["x"] - print("Objekt-Koordinaten "+self.__name+"= X: "+str(self.__rectobjekt.x)+" Y: "+str(self.__rectobjekt.y), end="\r") + #print("Objekt-Koordinaten "+self.__name+"= X: "+str(self.__rectobjekt.x)+" Y: "+str(self.__rectobjekt.y), end="\r") def draw(self): #font = pygame.font.SysFont(None, 70) #text = font.render("TEST", True, (0,0,0) ) - if(self.__removed == False): - self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self.__pos_x, self.__pos_y,20,20]) + if(self.__hide == False): + 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_rect(self): return self.__rectobjekt @@ -90,7 +90,7 @@ class GameObject(): def get_movespeed(self): return self.__movespeed - def is_collided(self): + def is_collided(self) -> bool: return self.__collided def set_collided(self): @@ -101,10 +101,10 @@ class GameObject(): #print(GameObject.get_rect()) """TODO: Hitbox with Objectsize""" - if(pygame.rect.Rect.colliderect(self.__rectobjekt, GameObject.get_rect())): - print("\nKollision") #Funktioniert für das erste! + 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() - self.remove() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject + #self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject def draw_follower(self, *Entities:tuple): """Für alle Collidierten Gameobjects""" @@ -112,26 +112,26 @@ class GameObject(): y = GameObject(x) if(y.is_collided() == True): print("REST") - - - def remove(self): - print("Gameoject mit der ID " + self.__name + " gelöscht!") - self.__removed = True + def hide(self): + if(self.__hide != True): + print("Gameoject mit der ID " + self.__name + " gelöscht!") + self.__hide = True """TODO: Delete obeject function""" def spawn_entities(x:int): Objects = list() + count = 0 for y in range(x): - Objects.append(GameObject("TEST", rnd.randint(1,640), rnd.randint(1,480), rnd.randint(1,10))) - + Objects.append(GameObject("Entitiy-"+str(count), rnd.randint(1,MAINSCREEN_SIZE[0]), rnd.randint(1,MAINSCREEN_SIZE[1]), rnd.randint(1,15))) + count += 1 for x in Objects: print(x) - return tuple(Objects) + return list(Objects) -Player = GameObject("Testobject", 10, 10) +Player = GameObject("Player", 10, 10) background = pygame.surface.Surface((640,480)) @@ -144,6 +144,7 @@ while active == True: for event in pygame.event.get(): if (event.type == pygame.QUIT): print("Programm wird geschlossen!") + print(spawned_entities) active = False elif (event.type == pygame.KEYDOWN): if (event.key == pygame.K_UP): @@ -160,12 +161,15 @@ while active == True: Player.change_direction("left") Player.draw() - Player.move(5) + Player.move(2) for y in spawned_entities: + y:GameObject y.draw() y.collide(Player) - y.remove + if(y.is_collided() == True): + y.hide() + Player.draw_follower(spawned_entities)