Rewrite Gameobjects

Added new movementfunction
Code cleanup

Todo: Remove old class and update code for new one
This commit is contained in:
2024-01-29 21:47:43 +01:00
parent a3269826bf
commit 92fd4a4cb2
2 changed files with 96 additions and 49 deletions

View File

@@ -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())"""