Added followers function
Actually want draw all followers on Playerobject :(
This commit is contained in:
@@ -32,6 +32,7 @@ class GameObject():
|
|||||||
__hide = False
|
__hide = False
|
||||||
__collided = False
|
__collided = False
|
||||||
__is_player = False
|
__is_player = False
|
||||||
|
__has_follower = False
|
||||||
|
|
||||||
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
||||||
|
|
||||||
@@ -103,6 +104,15 @@ class GameObject():
|
|||||||
def get_movespeed(self):
|
def get_movespeed(self):
|
||||||
return self.__movespeed
|
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):
|
def __updatepos(self, posx, posy):
|
||||||
if posx == (self.__last_pos_x + self.__size_rect["x"]): self.__last_pos_x = self.__pos_x
|
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
|
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!
|
print("Kollision\n") #Funktioniert für das erste!
|
||||||
self.set_collided()
|
self.set_collided()
|
||||||
#self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject
|
#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):
|
def hide(self):
|
||||||
if(self.__hide != True):
|
if(self.__hide != True):
|
||||||
@@ -135,6 +141,27 @@ class GameObject():
|
|||||||
self.__hide = True
|
self.__hide = True
|
||||||
"""TODO: Delete obeject function"""
|
"""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():
|
def start_game():
|
||||||
menu.disable()
|
menu.disable()
|
||||||
return 0
|
return 0
|
||||||
@@ -156,18 +183,6 @@ def spawn_entities(x:int):
|
|||||||
for y in range(x):
|
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 = 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()
|
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)
|
Objects.append(Entity)
|
||||||
count += 1
|
count += 1
|
||||||
for x in Objects:
|
for x in Objects:
|
||||||
@@ -222,6 +237,8 @@ x = 3600
|
|||||||
invert = False
|
invert = False
|
||||||
spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObjekten
|
spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObjekten
|
||||||
count_spawend_enities = len(spawned_entities)
|
count_spawend_enities = len(spawned_entities)
|
||||||
|
test_grid_x = MAINSCREEN_SIZE[0]/60
|
||||||
|
|
||||||
#Fenster-Hauptschleife
|
#Fenster-Hauptschleife
|
||||||
while active == True:
|
while active == True:
|
||||||
MAINSCREEN.fill((255,255,255))
|
MAINSCREEN.fill((255,255,255))
|
||||||
@@ -246,25 +263,54 @@ while active == True:
|
|||||||
|
|
||||||
Player.draw()
|
Player.draw()
|
||||||
Player.move(5)
|
Player.move(5)
|
||||||
|
|
||||||
|
#Spawns the Entities
|
||||||
count_hidden_entities = 0
|
count_hidden_entities = 0
|
||||||
|
first_follower:GameObject
|
||||||
|
last_object:GameObject = None
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
y:GameObject
|
y:GameObject
|
||||||
y.draw()
|
|
||||||
y.collide(Player)
|
|
||||||
if(y.is_collided() == True):
|
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
|
count_hidden_entities += 1
|
||||||
Player.draw_follower(y)
|
print("This Object: ", end=" ")
|
||||||
#spawned_entities.remove(y)
|
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):
|
if(count_hidden_entities == count_spawend_enities):
|
||||||
print("WIN!!!")
|
print("WIN!!!")
|
||||||
menu.enable()
|
menu.enable()
|
||||||
menu.add.label("WIN", "win", 10)
|
menu.add.label("WIN", "win", 10)
|
||||||
menu.mainloop(MAINSCREEN)
|
menu.mainloop(MAINSCREEN)
|
||||||
#break
|
break
|
||||||
|
|
||||||
pygame.draw.line(MAINSCREEN, (0,0,0), (10,0),(10,MAINSCREEN_SIZE[1]))
|
"""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):
|
if(x == 0):
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
|
|||||||
Reference in New Issue
Block a user