import pygame import pygame_menu import random as rnd pygame.init() MAINSCREEN = pygame.display.set_mode((640,480)) pygame.display.set_caption("Testgame") WEISS = ( 255, 255, 255) active = True clock = pygame.time.Clock() # Definieren der Variablen ballpos_x = 10 ballpos_y = 10 class GameObject(): __name = str() __pos_x = int() __pos_y = int() __color = (0,0,0) __movespeed = int() __rectobjekt = pygame.Rect __surface = MAINSCREEN __removed = 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) -> None: self.__name = name self.__pos_x = posx_init self.__pos_y = posy_init 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(): self.__movedirection[key] = False self.__movedirection[direction] = True print(direction) pass def move(self, *speed:int): MOVE_SPEED = 1 #self.__rectobjekt.x += MOVE_SPEED 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 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 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 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 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,100,100]) def get_rect(self): return self.__rectobjekt def get_movespeed(self): return self.__movespeed def collide(self, GameObject): #print(GameObject) #print(GameObject.get_rect()) if(self.get_rect().x == GameObject.get_rect().x and self.get_rect().y == GameObject.get_rect().y): """TODO: Hitbox with Objectsize""" if(pygame.rect.Rect.colliderect(self.__rectobjekt, GameObject.get_rect())): print("Kollision") pass def remove(self): print("Gameoject mit der ID " + self.__name + " gelöscht!") self.__removed = True """TODO: Delete obeject function""" def spawn_entities(x:int): Objects = list() for y in range(x): Objects.append(GameObject("TEST", rnd.randint(1,640), rnd.randint(1,480), rnd.randint(1,10))) for x in Objects: print(x) return tuple(Objects) object1 = GameObject("Testobject", 50, 50) object2 = GameObject("Testobject2", 100, 100) background = pygame.surface.Surface((640,480)) x = 3600 invert = False spawned_enteties = spawn_entities(5) #Fenster-Hauptschleife while active == True: MAINSCREEN.fill((255,255,255)) for event in pygame.event.get(): if (event.type == pygame.QUIT): print("Programm wird geschlossen!") active = False elif (event.type == pygame.KEYDOWN): if (event.key == pygame.K_UP): print("Keydown") object1.change_direction("up") elif (event.key == pygame.K_DOWN): print("Keydown") object1.change_direction("down") #rect1.move(ballpos_x, ballpos_y) elif (event.key == pygame.K_RIGHT): print("Keydown") object1.change_direction("right") #rect1.move(ballpos_x, ballpos_y) ballpos_x += 10 elif (event.key == pygame.K_LEFT): print("Keydown") object1.change_direction("left") #rect1.move(ballpos_x, ballpos_y) ballpos_x -= 10 for y in spawned_enteties: y.draw() y.move(y.get_movespeed()) object1.draw() object1.move(10) object2.draw() object2.move(1) object2.collide(object1) if(x == 0): for y in spawned_enteties: y.remove() pass x -= 1 """ rect1 = pygame.draw.rect(MAINSCREEN, (0,0,0), [ballpos_x,ballpos_y,100,100]) if(not invert): #if ballpos_x <= (MAINSCREEN.get_size()[0]): ballpos_x += 1 if ballpos_y <= (MAINSCREEN.get_size()[1]): ballpos_y += 1 #if(ballpos_x >= MAINSCREEN.get_size()[0]): ballpos_x = int(-100) if(ballpos_y >= MAINSCREEN.get_size()[1]): ballpos_y = int(-100) """ """ Lässt das Rechteck diagonal auf- und ablaufen if(not invert): if ballpos_x < (MAINSCREEN.get_size()[0]-100): ballpos_x += 1 if ballpos_y < (MAINSCREEN.get_size()[1]-100): ballpos_y += 1 else: if ballpos_x != 0: ballpos_x -= 1 if ballpos_y != 0: ballpos_y -= 1 if(ballpos_x == (MAINSCREEN.get_size()[0]-100) and ballpos_y == (MAINSCREEN.get_size()[1]-100)): invert = True if(ballpos_x == 0 and ballpos_y == 0): invert = False """ #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 #pygame.display.flip() pygame.display.flip() clock.tick(60) pygame.quit()