TODO Hardcopy der Gameobjects calss
Funktion manipuliert aktive Gameobjekte, welche mit vererbter Klasse instanziert werden Grund hierfür, konnte noch nicht ausfindig gemacht werden!
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import pygame
|
import pygame
|
||||||
import pygame_menu
|
import pygame_menu
|
||||||
import random as rand
|
import random as rand
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
pygame.init()
|
pygame.init()
|
||||||
MAINSCREEN_SIZE = (1024,768)
|
MAINSCREEN_SIZE = (1024,768)
|
||||||
@@ -25,18 +26,19 @@ 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":60, "y":60}
|
__size_rect = {"x":0, "y":0}
|
||||||
__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
|
__is_player = False
|
||||||
|
__is_rect = False
|
||||||
__has_follower = False
|
__has_follower = 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, is_player:bool = False) -> None:
|
def __init__(self, name:str, posx_init:int=0, posy_init:int=0, move_speed:int=0, is_player:bool = False, is_rect:bool = True, rect_size:tuple = (10,10)) -> 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
|
||||||
@@ -44,6 +46,10 @@ class GameObject():
|
|||||||
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.__is_player = is_player
|
||||||
|
self.__is_rect = is_rect
|
||||||
|
self.__size_rect["x"] = rect_size[0]
|
||||||
|
self.__size_rect["y"] = rect_size[1]
|
||||||
|
|
||||||
#self.__rectobjekt = rect
|
#self.__rectobjekt = rect
|
||||||
|
|
||||||
def change_direction(self, direction:dict):
|
def change_direction(self, direction:dict):
|
||||||
@@ -132,7 +138,7 @@ class GameObject():
|
|||||||
def set_collided(self):
|
def set_collided(self):
|
||||||
self.__collided = True
|
self.__collided = True
|
||||||
|
|
||||||
def collide(self, GameObject):
|
def collide(self, GameObject) -> bool:
|
||||||
#print(GameObject)
|
#print(GameObject)
|
||||||
#print(GameObject.get_rect())
|
#print(GameObject.get_rect())
|
||||||
"""TODO: Hitbox with Objectsize"""
|
"""TODO: Hitbox with Objectsize"""
|
||||||
@@ -140,7 +146,9 @@ class GameObject():
|
|||||||
if(pygame.rect.Rect.colliderect(self.__rectobjekt, GameObject.get_rect()) and not self.is_collided()):
|
if(pygame.rect.Rect.colliderect(self.__rectobjekt, GameObject.get_rect()) and not self.is_collided()):
|
||||||
print("Kollision\n") #Funktioniert für das erste!
|
print("Kollision\n") #Funktioniert für das erste!
|
||||||
self.set_collided()
|
self.set_collided()
|
||||||
|
return True
|
||||||
#self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject
|
#self.hide() #Löscht das Objekt nach einem Zusammenstoß mit Playerobject
|
||||||
|
return False
|
||||||
|
|
||||||
def hide(self):
|
def hide(self):
|
||||||
if(self.__hide != True):
|
if(self.__hide != True):
|
||||||
@@ -148,19 +156,16 @@ class GameObject():
|
|||||||
self.__hide = True
|
self.__hide = True
|
||||||
"""TODO: Delete obeject function"""
|
"""TODO: Delete obeject function"""
|
||||||
|
|
||||||
|
|
||||||
#print(pos)
|
|
||||||
#print(self.get_position())
|
|
||||||
|
|
||||||
#Behandelt später die Hauptschleife und Klassenobjekte
|
#Behandelt später die Hauptschleife und Klassenobjekte
|
||||||
class Game():
|
class Game():
|
||||||
__state = {"win":False, "lose":False, "paused":False}
|
__state = {"win":False, "lose":False, "paused":False}
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
pass
|
pass
|
||||||
#Handles all collided objects an adds it as Playerfollower
|
#Handles all collided objects an adds it as Playerfollower
|
||||||
|
|
||||||
class Follower(GameObject):
|
class Follower(GameObject):
|
||||||
def __init__(self, name: str, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False) -> None:
|
def __init__(self, name: str, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False, is_rect: bool = True, rect_size: tuple = (10, 10)) -> None:
|
||||||
super().__init__(name, posx_init, posy_init, move_speed, is_player)
|
super().__init__(name, posx_init, posy_init, move_speed, is_player, is_rect, rect_size)
|
||||||
|
|
||||||
def set_position(self, pos:tuple, playermovedirection:list):
|
def set_position(self, pos:tuple, playermovedirection:list):
|
||||||
|
|
||||||
@@ -196,7 +201,7 @@ def spawn_entities(x:int):
|
|||||||
Objects = list()
|
Objects = list()
|
||||||
count = 0
|
count = 0
|
||||||
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), is_rect=True, rect_size=(100,100))
|
||||||
Entity.get_name(True)
|
Entity.get_name(True)
|
||||||
Objects.append(Entity)
|
Objects.append(Entity)
|
||||||
count += 1
|
count += 1
|
||||||
@@ -204,7 +209,7 @@ def spawn_entities(x:int):
|
|||||||
print(x)
|
print(x)
|
||||||
return list(Objects)
|
return list(Objects)
|
||||||
|
|
||||||
Player = GameObject("Player", 10, 10, 10, is_player=False)
|
Player = GameObject("Player", 10, 10, 10, is_player=False, is_rect=True, rect_size=(20,20))
|
||||||
|
|
||||||
background = pygame.surface.Surface((640,480))
|
background = pygame.surface.Surface((640,480))
|
||||||
|
|
||||||
@@ -212,10 +217,11 @@ background = pygame.surface.Surface((640,480))
|
|||||||
x = 3600
|
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)
|
|
||||||
test_grid_x = MAINSCREEN_SIZE[0]/60
|
|
||||||
colided_objects = list()
|
|
||||||
count_hidden_entities = 0
|
count_hidden_entities = 0
|
||||||
|
count_spawend_enities = len(spawned_entities)
|
||||||
|
print("Es wurden " + str(count_spawend_enities)+ " Objekte gespawnt")
|
||||||
|
colided_objects = list()
|
||||||
|
|
||||||
#Fenster-Hauptschleife
|
#Fenster-Hauptschleife
|
||||||
while active == True:
|
while active == True:
|
||||||
MAINSCREEN.fill((255,255,255))
|
MAINSCREEN.fill((255,255,255))
|
||||||
@@ -240,22 +246,23 @@ while active == True:
|
|||||||
|
|
||||||
Player.draw()
|
Player.draw()
|
||||||
Player.move(5)
|
Player.move(5)
|
||||||
|
print("Aktuell kollidierte Objekte: ", str(count_hidden_entities))
|
||||||
|
|
||||||
#Spawns the Entities
|
#Spawns the Entities
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
y:GameObject
|
y:GameObject
|
||||||
|
y.draw()
|
||||||
if(y.is_collided() == True):
|
if(y.is_collided() == True):
|
||||||
#Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern
|
#Der erste Follower folgt dem Spieler, alle übrigen folgen den vorherien Verfolgern
|
||||||
#y.hide()
|
y.hide()
|
||||||
count_hidden_entities += 1
|
pass
|
||||||
colidedobj = Follower(y.get_name())
|
|
||||||
colided_objects.append(colidedobj)
|
|
||||||
spawned_entities.remove(y)
|
|
||||||
|
|
||||||
if(y.is_collided() == False):
|
if(y.is_collided() == False):
|
||||||
y.draw()
|
if(y.collide(Player)):
|
||||||
y.collide(Player)
|
count_hidden_entities += 1
|
||||||
|
#TODO Hardcopy der Gameobjects calss // Funktion manipuliert aktive Gameobjekte, welche mit vererbter Klasse instanziert werden
|
||||||
|
#Grund hierfür, konnte noch nicht ausfindig gemacht werden!
|
||||||
|
colided_objects.append(Follower(y.get_name(), is_rect=True, rect_size=(50,50)))
|
||||||
|
|
||||||
|
|
||||||
if(count_hidden_entities == count_spawend_enities):
|
if(count_hidden_entities == count_spawend_enities):
|
||||||
print("WIN!!!")
|
print("WIN!!!")
|
||||||
@@ -264,16 +271,6 @@ while active == True:
|
|||||||
menu.mainloop(MAINSCREEN)
|
menu.mainloop(MAINSCREEN)
|
||||||
break
|
break
|
||||||
|
|
||||||
print(len(colided_objects))
|
|
||||||
obj1_count = 0
|
|
||||||
for obj1 in colided_objects:
|
|
||||||
Player:GameObject
|
|
||||||
obj1:Follower
|
|
||||||
obj1.set_position((1,1), Player.get_playermovedirection())
|
|
||||||
obj1.get_position(True)
|
|
||||||
obj1.get_name(True)
|
|
||||||
#obj1.get_name(True)
|
|
||||||
|
|
||||||
if(x == 0):
|
if(x == 0):
|
||||||
for y in spawned_entities:
|
for y in spawned_entities:
|
||||||
y.hide()
|
y.hide()
|
||||||
|
|||||||
Reference in New Issue
Block a user