Added followers function

Actually want draw all followers on Playerobject :(
This commit is contained in:
2023-12-31 14:11:37 +01:00
parent da23babe68
commit 73cfbbbce4

View File

@@ -32,6 +32,7 @@ class GameObject():
__hide = False
__collided = False
__is_player = False
__has_follower = False
__movedirection = {"up":False, "down":False, "left":False, "right":False}
@@ -103,6 +104,15 @@ class GameObject():
def get_movespeed(self):
return self.__movespeed
def get_playermovedirection(self):
return self.__movedirection
def has_follower(self):
return self.__has_follower
def set_follower(self):
self.__has_follower = True
def __updatepos(self, posx, posy):
if posx == (self.__last_pos_x + self.__size_rect["x"]): self.__last_pos_x = self.__pos_x
if posy == (self.__last_pos_y + self.__size_rect["y"]): self.__last_pos_y = self.__pos_y
@@ -124,10 +134,6 @@ class GameObject():
print("Kollision\n") #Funktioniert für das erste!
self.set_collided()
#self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject
def draw_follower(self, Player):
"""Für alle Collidierten Gameobjects"""
#print("Zeichne verfolger")
def hide(self):
if(self.__hide != True):
@@ -135,6 +141,27 @@ class GameObject():
self.__hide = True
"""TODO: Delete obeject function"""
def set_position(self, pos:tuple, playermovedirection:list):
if(playermovedirection["up"]):
self.__pos_y = pos[1]+60
self.__pos_x = pos[0]
if(playermovedirection["down"]):
self.__pos_y = pos[1]-60
self.__pos_x = pos[0]
if(playermovedirection["left"]):
self.__pos_x = pos[0]+60
self.__pos_y = pos[1]
if(playermovedirection["right"]):
self.__pos_x = pos[0]-60
self.__pos_y = pos[1]
print(pos)
print(self.get_position())
class Playerfollower(GameObject):
def __init__(self, name: str, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False) -> None:
super().__init__(name, posx_init, posy_init, move_speed, is_player)
def start_game():
menu.disable()
return 0
@@ -156,18 +183,6 @@ def spawn_entities(x:int):
for y in range(x):
Entity = GameObject("Entitiy-"+str(count), rand.randint(1,MAINSCREEN_SIZE[0]), rand.randint(1,MAINSCREEN_SIZE[1]), rand.randint(1,15))
Entity_rect = Entity.get_rect()
for y in Objects:
y:GameObject
print(y.get_position())
if(y.get_position()[0] == Entity.get_position()[0] or
y.get_position()[0] <= Entity.get_position()[0]+10 or
y.get_position()[0] <= Entity.get_position()[0]-10):
print("Überlagerung")
Objects.remove(y)
#if(pygame.rect.Rect.colliderect(y)):
# print("Kollision, neuberechnung")
#Neuberechnung der Cluster, falls Kollision mit bestehenden Clustern vorliegt
Objects.append(Entity)
count += 1
for x in Objects:
@@ -222,6 +237,8 @@ x = 3600
invert = False
spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObjekten
count_spawend_enities = len(spawned_entities)
test_grid_x = MAINSCREEN_SIZE[0]/60
#Fenster-Hauptschleife
while active == True:
MAINSCREEN.fill((255,255,255))
@@ -246,25 +263,54 @@ while active == True:
Player.draw()
Player.move(5)
#Spawns the Entities
count_hidden_entities = 0
first_follower:GameObject
last_object:GameObject = None
for y in spawned_entities:
y:GameObject
y.draw()
y.collide(Player)
if(y.is_collided() == True):
y.hide()
#Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern
#y.hide()
count_hidden_entities += 1
Player.draw_follower(y)
#spawned_entities.remove(y)
print("This Object: ", end=" ")
print(y)
print("Last Objetct: ", end=" ")
if(last_object):
print("Last Objetct: ", end=" ")
print(last_object)
if(not Player.has_follower()):
Player.set_follower()
first_follower = y
last_object = y
else:
last_object = y
if(last_object):
y.set_position(last_object.get_position(), Player.get_playermovedirection())
pass
y.set_position(Player.get_position(), Player.get_playermovedirection())
last_object = y
y.draw()
y.collide(Player)
if(count_hidden_entities == count_spawend_enities):
print("WIN!!!")
menu.enable()
menu.add.label("WIN", "win", 10)
menu.mainloop(MAINSCREEN)
#break
pygame.draw.line(MAINSCREEN, (0,0,0), (10,0),(10,MAINSCREEN_SIZE[1]))
break
"""Drawing Lines test
pos = 0
for x in range(20):
pos += 60
pygame.draw.line(MAINSCREEN, (0,0,0), (pos,0),(pos,MAINSCREEN_SIZE[1]))"""
if(x == 0):
for y in spawned_entities: