Added followers function
Actually want draw all followers on Playerobject :(
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user