Spawn entities with ID-Tag + Code cleanup
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user