Files
test/GameObject.py
2024-08-09 09:49:19 +02:00

97 lines
3.2 KiB
Python

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):
shots_fired = list()
def __init__(self, name, pos_x, pos_y, width, height, image=None) -> None:
super().__init__(name, pos_x, pos_y, width, height, image)
self._speed = 10
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!")
pass
def move(self, x=0, y=0):
if x != 0:
self.pos_x += x
if y != 0:
self.pos_y += 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(" ", 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()
def move(self, x=0, y=0):
if(x != 0):
self.pos_x += x
if(y != 0):
self.pos_y += y
class Projectile(GameObject):
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 = screen
self.speed = 10
def animate(self):
self.rect = pygame.draw.rect(self.screen, (0,0,0), (self.pos_x, self.pos_y, self.width, self.height))
self.pos_y += self.speed