Rewrite Gameobjects
Added new movementfunction Code cleanup Todo: Remove old class and update code for new one
This commit is contained in:
@@ -7,9 +7,9 @@ class GameObject():
|
||||
_size_rect_x:int
|
||||
_size_rect_y:int
|
||||
__movespeed = int()
|
||||
__rectobjekt:pygame.Rect
|
||||
__surface:pygame.Surface
|
||||
__mainscreensize:tuple
|
||||
_rectobjekt:pygame.Rect
|
||||
_surface:pygame.Surface
|
||||
_mainscreensize:tuple
|
||||
__hide = False
|
||||
__collided = False
|
||||
__is_player = False
|
||||
@@ -33,8 +33,8 @@ class GameObject():
|
||||
self.count += 1
|
||||
self.__pos_lf_x = 0
|
||||
self.__pos_lf_y = 0
|
||||
self.__surface = surface
|
||||
self.__mainscreensize = mainscreensize
|
||||
self._surface = surface
|
||||
self._mainscreensize = mainscreensize
|
||||
self.__score = 0
|
||||
self.__imagepath = image
|
||||
self.__imageloaded = 0
|
||||
@@ -44,7 +44,7 @@ class GameObject():
|
||||
#font = pygame.font.SysFont(None, 70)
|
||||
#text = font.render("TEST", True, (0,0,0) )
|
||||
if(not self.__hide):
|
||||
self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self._pos_x, self._pos_y,self._size_rect_x,self._size_rect_y])
|
||||
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_name(self, debug=False):
|
||||
if(debug):
|
||||
@@ -57,7 +57,7 @@ class GameObject():
|
||||
return (self._pos_x, self._pos_y)
|
||||
|
||||
def get_rect(self):
|
||||
return self.__rectobjekt
|
||||
return self._rectobjekt
|
||||
|
||||
def get_rect_size(self):
|
||||
return (self._size_rect_x, self._size_rect_y)
|
||||
@@ -72,7 +72,7 @@ class GameObject():
|
||||
return self.__score
|
||||
|
||||
def get_surface(self) -> pygame.Surface:
|
||||
return self.__surface
|
||||
return self._surface
|
||||
|
||||
def has_follower(self):
|
||||
return self.__has_follower
|
||||
@@ -105,7 +105,7 @@ class GameObject():
|
||||
#print(GameObject.get_rect())
|
||||
"""TODO: Hitbox with Objectsize"""
|
||||
|
||||
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!
|
||||
self.set_collided()
|
||||
return True
|
||||
@@ -118,6 +118,24 @@ class GameObject():
|
||||
self.__hide = True
|
||||
"""TODO: Delete obeject function"""
|
||||
|
||||
class GameObject_new():
|
||||
def __init__(self, name:str, surface:pygame.surface.Surface, surface_size:tuple, init_pos_x, init_pos_y, visibility:bool = True) -> None:
|
||||
self._name = name
|
||||
self._surface = surface
|
||||
self._surface_size = surface_size
|
||||
self._position = [init_pos_x, init_pos_y]
|
||||
self._visibility = visibility
|
||||
|
||||
def printall_attributes(self):
|
||||
print(self._name)
|
||||
print(self._surface)
|
||||
print(self._surface_size)
|
||||
print(self._position)
|
||||
print(self._visibility)
|
||||
|
||||
def get_position(self) -> tuple:
|
||||
return self._position
|
||||
|
||||
|
||||
|
||||
class Block(GameObject):
|
||||
@@ -146,17 +164,18 @@ class Block(GameObject):
|
||||
def get_score(self) -> int:
|
||||
return self.__score
|
||||
|
||||
class Player(GameObject):
|
||||
class Player(GameObject_new):
|
||||
#Later handles the Player-Gameobject
|
||||
def __init__(self, name: str, surface, mainscreensize: tuple, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False, is_rect: bool = True, color: tuple = (0, 0, 0), rect_size: tuple = (10, 10), image=str()) -> None:
|
||||
super().__init__(name, surface, mainscreensize, posx_init, posy_init, move_speed, is_player, is_rect, color, rect_size, image)
|
||||
|
||||
self.__mainscreensize = mainscreensize
|
||||
print(self.__mainscreensize)
|
||||
|
||||
super().set_position((150, 550))
|
||||
def __init__(self, name: str, surface: pygame.Surface, surface_size: tuple, init_pos_x, init_pos_y, visibility: bool = True,
|
||||
size:int = 10
|
||||
) -> None:
|
||||
self._size = size
|
||||
self._score = 0
|
||||
super().__init__(name, surface, surface_size, init_pos_x, init_pos_y, visibility)
|
||||
|
||||
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
||||
__snake_body = [[100,100], [100,140], [100,180], [100,220]]
|
||||
__test_counter = 0
|
||||
|
||||
def user_test_func(self):
|
||||
pass
|
||||
@@ -170,34 +189,53 @@ class Player(GameObject):
|
||||
|
||||
def move(self, *speed:int):
|
||||
MOVE_SPEED = 1
|
||||
#self.__rectobjekt.x += MOVE_SPEED
|
||||
objectpos = super().get_position()
|
||||
if(self.__test_counter == 15):
|
||||
self.__test_counter = 0
|
||||
if(self.__movedirection['up']):
|
||||
if(not speed): self._position[1] -= MOVE_SPEED
|
||||
else: self._position[1] -= speed[0]
|
||||
if(self._position[1] <= -self._size):
|
||||
self._position[1] = self._surface_size[1]
|
||||
|
||||
if(self.__movedirection['up']):
|
||||
if(not speed): self._pos_y -= MOVE_SPEED
|
||||
else: self._pos_y -= speed[0]
|
||||
if(self._pos_y <= -self._size_rect_y):
|
||||
self._pos_y = self.__mainscreensize[1]
|
||||
elif(self.__movedirection['down']):
|
||||
if(not speed): self._position[1] += MOVE_SPEED
|
||||
else: self._position[1] += speed[0]
|
||||
if(self._position[1] >= self._surface_size[1]):
|
||||
self._position[1] = -self._size
|
||||
|
||||
elif(self.__movedirection['down']):
|
||||
if(not speed): self._pos_y += MOVE_SPEED
|
||||
else: self._pos_y += speed[0]
|
||||
if(self._pos_y >= self.__mainscreensize[1]):
|
||||
self._pos_y = -self._size_rect_y
|
||||
elif(self.__movedirection['left']):
|
||||
if(not speed): self._position[0] -= MOVE_SPEED
|
||||
else: self._position[0] -= speed[0]
|
||||
if(self._position[0] <= -self._size):
|
||||
self._position[0] = self._surface_size[0]
|
||||
|
||||
elif(self.__movedirection['left']):
|
||||
if(not speed): self._pos_x -= MOVE_SPEED
|
||||
else: self._pos_x -= speed[0]
|
||||
if(self._pos_x <= -self._size_rect_x):
|
||||
self._pos_x = self.__mainscreensize[0]
|
||||
elif(self.__movedirection['right']):
|
||||
if(not speed): self._position[0] += MOVE_SPEED
|
||||
else: self._position[0] += speed[0]
|
||||
if(self._position[0] >= self._surface_size[0]):
|
||||
self._position[0] = -self._size
|
||||
self.__test_counter+=1
|
||||
|
||||
elif(self.__movedirection['right']):
|
||||
if(not speed): self._pos_x += MOVE_SPEED
|
||||
else: self._pos_x += speed[0]
|
||||
if(self._pos_x >= self.__mainscreensize[0]):
|
||||
self._pos_x = -self._size_rect_x
|
||||
def draw(self):
|
||||
if(self.__test_counter == 15):
|
||||
self.__snake_body.insert(0, list(self._position))
|
||||
for pos in self.__snake_body:
|
||||
pygame.draw.rect(self._surface, (0,0,0), pygame.Rect(pos[0], pos[1], self._size, self._size))
|
||||
print(pos)
|
||||
if(self.__test_counter == 15):
|
||||
self.__snake_body.pop()
|
||||
|
||||
def add_body(self):
|
||||
self.__snake_body.insert(0,list(self._position))
|
||||
|
||||
def get_rect_size(self):
|
||||
return self._size
|
||||
|
||||
def get_player_score(self) -> int:
|
||||
return self._score
|
||||
|
||||
|
||||
"""
|
||||
class GOIMAGE(GameObject):
|
||||
def __init__(self, name: str, surface, mainscreensize: tuple, posx_init: int = 0, posy_init: int = 0, move_speed: int = 0, is_player: bool = False, is_rect: bool = True, color: tuple = (0, 0, 0), rect_size: tuple = (10, 10), image=str()) -> None:
|
||||
super().__init__(name, surface, mainscreensize, posx_init, posy_init, move_speed, is_player, is_rect, color, rect_size, image)
|
||||
@@ -209,4 +247,4 @@ class GOIMAGE(GameObject):
|
||||
|
||||
def draw(self):
|
||||
surface = self.get_surface()
|
||||
surface.blit(self.__image, self.get_position())
|
||||
surface.blit(self.__image, self.get_position())"""
|
||||
@@ -71,7 +71,7 @@ menu.add.button('Play', start_game)
|
||||
menu.add.button('Quit', pygame_menu.events.EXIT)
|
||||
menu.mainloop(MAINSCREEN)
|
||||
|
||||
player = Player("Player", MAINSCREEN, MAINSCREEN_SIZE, 10, 10, 10, is_player=False, is_rect=True, color=(0,255,0) ,rect_size=(80,80))
|
||||
player = Player("Player", MAINSCREEN, MAINSCREEN_SIZE, 100, 100, size=40)
|
||||
|
||||
def spawn_entities(x:int, list_of_objects:list):
|
||||
count = 0
|
||||
@@ -79,10 +79,7 @@ def spawn_entities(x:int, list_of_objects:list):
|
||||
rect_size = 80
|
||||
Entity = Block("Entitiy-"+str(count), MAINSCREEN, MAINSCREEN_SIZE, rand.randint(1,MAINSCREEN_SIZE[0]), rand.randint(1,MAINSCREEN_SIZE[1]), rand.randint(1,15), is_rect=True, rect_size=(rect_size,rect_size))
|
||||
Entity.get_name(True)
|
||||
if(Entity.get_position() > player.get_position() + player.get_rect_size() or Entity.get_position() < player.get_position() + player.get_rect_size()):
|
||||
list_of_objects.append(Entity)
|
||||
else:
|
||||
print("Object zu nach an Spieler")
|
||||
list_of_objects.append(Entity)
|
||||
count += 1
|
||||
|
||||
|
||||
@@ -93,7 +90,7 @@ x = 3600
|
||||
invert = False
|
||||
colided_objects = list()
|
||||
spawned_entities = list()
|
||||
spawn_entities(20, spawned_entities)
|
||||
spawn_entities(2, spawned_entities)
|
||||
count_hidden_entities = 0
|
||||
count_spawend_enities = len(spawned_entities)
|
||||
print("Es wurden " + str(count_spawend_enities)+ " Objekte gespawnt")
|
||||
@@ -101,6 +98,12 @@ print("Es wurden " + str(count_spawend_enities)+ " Objekte gespawnt")
|
||||
testx = 10
|
||||
testy = 10
|
||||
|
||||
counter = 0
|
||||
|
||||
#TESTOBJECT = GameObject_new("Testobjekt", MAINSCREEN, MAINSCREEN_SIZE, 0, 0)
|
||||
#print(help(TESTOBJECT))
|
||||
#TESTOBJECT.printall_attributes()
|
||||
|
||||
#Fenster-Hauptschleife+
|
||||
while active == True:
|
||||
MAINSCREEN.fill((255,255,255))
|
||||
@@ -126,12 +129,18 @@ while active == True:
|
||||
text_surface = my_font.render('Score: '+str(player.get_player_score()), False, (0, 0, 0))
|
||||
MAINSCREEN.blit(text_surface, (0,0))
|
||||
|
||||
|
||||
player.draw()
|
||||
player.update_pos_lastframe(player.get_position()[0], player.get_position()[1], False)
|
||||
player.move(5)
|
||||
player.move(40)
|
||||
if(counter == 300):
|
||||
player.add_body()
|
||||
counter = 0
|
||||
|
||||
counter += 1
|
||||
#print("Aktuelle Position: " + str(player.get_position()))
|
||||
#print("Aktuell kollidierte Objekte: ", str(count_hidden_entities))
|
||||
#Spawns the Entities
|
||||
"""
|
||||
for y in spawned_entities:
|
||||
y:Block
|
||||
y.draw()
|
||||
@@ -147,7 +156,7 @@ while active == True:
|
||||
count_hidden_entities += 1
|
||||
xy = y.get_rect_size()
|
||||
append_follwer(xy[0], xy[1])
|
||||
count_follower += 1
|
||||
count_follower += 1"""
|
||||
|
||||
#Zeichnet alle Verfolgerobjekte, sofern sie vorliegend sind
|
||||
#TODO: Follower sollen ab dem zweiten Objekt dem vorangegangenen Objekt folgen und nicht dem player
|
||||
|
||||
Reference in New Issue
Block a user