Some changes on mechanics
This commit is contained in:
@@ -25,22 +25,24 @@ class GameObject():
|
|||||||
__pos_x = int()
|
__pos_x = int()
|
||||||
__pos_y = int()
|
__pos_y = int()
|
||||||
__color = (0,0,0)
|
__color = (0,0,0)
|
||||||
__size_rect = {"x":50, "y":50}
|
__size_rect = {"x":60, "y":60}
|
||||||
__movespeed = int()
|
__movespeed = int()
|
||||||
__rectobjekt = pygame.Rect
|
__rectobjekt = pygame.Rect
|
||||||
__surface = MAINSCREEN
|
__surface = MAINSCREEN
|
||||||
__hide = False
|
__hide = False
|
||||||
__collided = False
|
__collided = False
|
||||||
|
__is_player = False
|
||||||
|
|
||||||
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
||||||
|
|
||||||
def __init__(self, name:str, posx_init:int=0, posy_init:int=0, move_speed:int=0) -> None:
|
def __init__(self, name:str, posx_init:int=0, posy_init:int=0, move_speed:int=0, is_player:bool = False) -> None:
|
||||||
self.__name = name
|
self.__name = name
|
||||||
self.__pos_x = posx_init
|
self.__pos_x = posx_init
|
||||||
self.__pos_y = posy_init
|
self.__pos_y = posy_init
|
||||||
self.__inital_pos_x = posx_init
|
self.__inital_pos_x = posx_init
|
||||||
self.__initial_pos_y = posx_init
|
self.__initial_pos_y = posx_init
|
||||||
self.__movespeed = move_speed
|
self.__movespeed = move_speed
|
||||||
|
self.__is_player = is_player
|
||||||
#self.__rectobjekt = rect
|
#self.__rectobjekt = rect
|
||||||
|
|
||||||
def change_direction(self, direction:dict):
|
def change_direction(self, direction:dict):
|
||||||
@@ -86,7 +88,12 @@ class GameObject():
|
|||||||
#font = pygame.font.SysFont(None, 70)
|
#font = pygame.font.SysFont(None, 70)
|
||||||
#text = font.render("TEST", True, (0,0,0) )
|
#text = font.render("TEST", True, (0,0,0) )
|
||||||
if(self.__hide == False): # Update this --redraw each 10 pixels or self_size
|
if(self.__hide == False): # Update this --redraw each 10 pixels or self_size
|
||||||
self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self.__pos_x, self.__pos_y,self.__size_rect["x"],self.__size_rect["y"]])
|
if(self.__is_player == True):
|
||||||
|
self.__updatepos(self.__pos_x, self.__pos_y)
|
||||||
|
self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self.__last_pos_x, self.__last_pos_y,self.__size_rect["x"],self.__size_rect["y"]])
|
||||||
|
else:
|
||||||
|
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):
|
def get_rect(self):
|
||||||
return self.__rectobjekt
|
return self.__rectobjekt
|
||||||
@@ -94,6 +101,12 @@ class GameObject():
|
|||||||
def get_movespeed(self):
|
def get_movespeed(self):
|
||||||
return self.__movespeed
|
return self.__movespeed
|
||||||
|
|
||||||
|
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
|
||||||
|
print("x= "+str(self.__last_pos_x)+" y= "+str(self.__last_pos_y), end="\r")
|
||||||
|
pass
|
||||||
|
|
||||||
def is_collided(self) -> bool:
|
def is_collided(self) -> bool:
|
||||||
return self.__collided
|
return self.__collided
|
||||||
|
|
||||||
@@ -110,12 +123,9 @@ class GameObject():
|
|||||||
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, *Entities:tuple):
|
def draw_follower(self, Player):
|
||||||
"""Für alle Collidierten Gameobjects"""
|
"""Für alle Collidierten Gameobjects"""
|
||||||
for x in Entities:
|
#print("Zeichne verfolger")
|
||||||
y = GameObject(x)
|
|
||||||
if(y.is_collided() == True):
|
|
||||||
print("REST")
|
|
||||||
|
|
||||||
def hide(self):
|
def hide(self):
|
||||||
if(self.__hide != True):
|
if(self.__hide != True):
|
||||||
@@ -135,13 +145,21 @@ def spawn_entities(x:int):
|
|||||||
return list(Objects)
|
return list(Objects)
|
||||||
|
|
||||||
|
|
||||||
Player = GameObject("Player", 10, 10)
|
Player = GameObject("Player", 10, 10, is_player=False)
|
||||||
|
|
||||||
background = pygame.surface.Surface((640,480))
|
background = pygame.surface.Surface((640,480))
|
||||||
|
|
||||||
|
#Behandelt später die Hauptschleife und Klassenobjekte
|
||||||
|
class Game():
|
||||||
|
__state = {"win":False, "lose":False, "paused":False}
|
||||||
|
def __init__(self) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
x = 3600
|
x = 3600
|
||||||
invert = False
|
invert = False
|
||||||
spawned_entities = spawn_entities(10) #Spawnt eine definierte Anzahl an GameObjekten
|
spawned_entities = spawn_entities(25) #Spawnt eine definierte Anzahl an GameObjekten
|
||||||
|
count_spawend_enities = len(spawned_entities)
|
||||||
#Fenster-Hauptschleife
|
#Fenster-Hauptschleife
|
||||||
while active == True:
|
while active == True:
|
||||||
MAINSCREEN.fill((255,255,255))
|
MAINSCREEN.fill((255,255,255))
|
||||||
@@ -165,17 +183,22 @@ while active == True:
|
|||||||
Player.change_direction("left")
|
Player.change_direction("left")
|
||||||
|
|
||||||
Player.draw()
|
Player.draw()
|
||||||
Player.move(2)
|
Player.move(12)
|
||||||
|
count_hidden_entities = 0
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
y:GameObject
|
y:GameObject
|
||||||
y.draw()
|
y.draw()
|
||||||
y.collide(Player)
|
y.collide(Player)
|
||||||
if(y.is_collided() == True):
|
if(y.is_collided() == True):
|
||||||
y.hide()
|
y.hide()
|
||||||
|
count_hidden_entities += 1
|
||||||
|
Player.draw_follower(y)
|
||||||
|
#spawned_entities.remove(y)
|
||||||
|
|
||||||
Player.draw_follower(spawned_entities)
|
if(count_hidden_entities == count_spawend_enities):
|
||||||
|
print("WIN!!!")
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
if(x == 0):
|
if(x == 0):
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
|
|||||||
Reference in New Issue
Block a user