import pygame class GameObject(object): objects = list() def __init__(self, name, pos_x, pos_y, width, height, image=None) -> None: self.name = name self.pos_x = pos_x self.pos_y = pos_y self.width = width self.height = height self.image = image self.rect:pygame.Rect self.objects.append(self) def get_objectinfo(self): print(F"Gameobject-Info: \n", F"Name: {self.name}\n", F"Position x: {self.pos_x} y: {self.pos_y}\n", F"Size = width: {self.width} height: {self.height}" ) def render(self, screen:pygame.Surface): if(self.image is not None): self.rect = screen.blit(self.image, (self.pos_x, self.pos_y, )) else: print("Kein Image hinterlegt!") return def setpos(self, pos_x, pos_y): self.pos_x = pos_x self.pos_y = pos_y def setsize(self, width, height): self.width = width self.height = height class Player(GameObject): def __init__(self, name, screen, pos_x, pos_y, width, height, image=None) -> None: super().__init__(name, pos_x, pos_y, width, height, image) self._speed = 10 self.screen = screen def handle_input(self, event:pygame.event.EventType): keys =pygame.key.get_pressed() if(event.type == pygame.KEYDOWN): print(event) if(keys[pygame.K_LEFT]): self.move(-self._speed) if(keys[pygame.K_RIGHT]): self.move(self._speed) #Deaktiviert, vorerst soll Bewegung nur rechts oder links möglich sein #if(event.key == pygame.K_UP): # self.move(0, -self._speed) #if(event.key == pygame.K_DOWN): # self.move(0, self._speed) if(event.key == pygame.K_SPACE): #Fiiirrreee in the hole print("Feuer!") self.fire(self.screen) def move(self, x=0, y=0): if x != 0: self.pos_x += x if y != 0: self.pos_y += y def fire(self, screen): shot = Projectile(self.name, self.pos_x+(self.width/2),self.pos_y-self.height,5,10, screen) def firecontrol(self, screen): if(len(Projectile.shots) >0): for objects in Projectile.shots: objects:dict for key, object in objects.items(): object:Projectile if(key == "Player"): object.animate("UP") #print("Playerschuss!") if(key == "Enemy"): print(object.pos_x, " ", object.pos_y) class Enemy(GameObject): shots_fired = list() def __init__(self, name, pos_x, pos_y, width, height, screen, image=None) -> None: super().__init__(name, pos_x, pos_y, width, height, image) def fire(self, screen): print("Schieße!!!!") shot = Projectile("Enemy", self.pos_x+(self.width/2),self.pos_y+self.height,5,10, screen) self.shots_fired.append(shot) def shoot(self): if(len(self.shots_fired) > 0): for shots in self.shots_fired: shots:Projectile shots.animate("DOWN") def move(self, x=0, y=0): if(x != 0): self.pos_x += x if(y != 0): self.pos_y += y class Projectile(GameObject): shots = list() def __init__(self, name, pos_x, pos_y, width, height, screen, image=None) -> None: super().__init__(name, pos_x, pos_y, width, height, image) self.screen:pygame.Surface = screen self.speed = 10 self.shot = {name:self} self.shots.append(self.shot) def animate(self, direction): self.rect = pygame.draw.rect(self.screen, (0,0,0), (self.pos_x, self.pos_y, self.width, self.height)) if(direction == "UP"): self.pos_y -= self.speed if(direction == "DOWN"): self.pos_y += self.speed if(self.pos_y >= self.screen.get_size()[1]): print()