Added collision check for gameobjects
Some cleanup
This commit is contained in:
73
main.py
73
main.py
@@ -82,19 +82,16 @@ def generate_map(*mapfile):
|
|||||||
startpos_y = 0
|
startpos_y = 0
|
||||||
id = 0
|
id = 0
|
||||||
for line in map_file:
|
for line in map_file:
|
||||||
#print(line)
|
|
||||||
for byte in line:
|
for byte in line:
|
||||||
#print(byte)
|
|
||||||
if(byte == "#"):
|
if(byte == "#"):
|
||||||
map1.append({"id":id,"object": pygame.image.load("models/wall_1.png"), "x":startpos_x, "y":startpos_y})
|
map1.append({"id":id,"object": pygame.image.load("models/wall_1.png"), "x":startpos_x, "y":startpos_y})
|
||||||
|
|
||||||
if(byte == " "):
|
if(byte == " "):
|
||||||
#movement_map.append({"x":startpos_x, "y":startpos_y})
|
|
||||||
movement_map.append({"id":id,"object": pygame.image.load("models/wall_1.png"), "x":startpos_x, "y":startpos_y})
|
movement_map.append({"id":id,"object": pygame.image.load("models/wall_1.png"), "x":startpos_x, "y":startpos_y})
|
||||||
|
|
||||||
startpos_x += map_wall_size
|
startpos_x += map_wall_size
|
||||||
id += 1
|
id += 1
|
||||||
#print(line)
|
|
||||||
startpos_x = 0
|
startpos_x = 0
|
||||||
startpos_y += map_wall_size
|
startpos_y += map_wall_size
|
||||||
|
|
||||||
@@ -103,42 +100,42 @@ generate_map()
|
|||||||
movement_map_center = (map_space_size-pacman_size)/2
|
movement_map_center = (map_space_size-pacman_size)/2
|
||||||
print(F"Center correction: {movement_map_center}")
|
print(F"Center correction: {movement_map_center}")
|
||||||
#Spawn pacman on top of the map
|
#Spawn pacman on top of the map
|
||||||
pacman_posx += movement_map[0]["x"]+movement_map_center
|
pacman.set_position(movement_map[0]["x"]+movement_map_center, movement_map[0]["y"]+movement_map_center)
|
||||||
pacman_posy += movement_map[0]["y"]+movement_map_center
|
|
||||||
|
|
||||||
count = 0
|
|
||||||
count2 = 0
|
|
||||||
|
|
||||||
while(gamestate==True):
|
while(gamestate==True):
|
||||||
MAINSCREEN.fill(WEISS)
|
MAINSCREEN.fill(WEISS)
|
||||||
PLAYGROUND.fill(WEISS)
|
#PLAYGROUND.fill(WEISS)
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if (event.type == pygame.QUIT):
|
if (event.type == pygame.QUIT):
|
||||||
print("Programm wird geschlossen!")
|
print("Programm wird geschlossen!")
|
||||||
gamestate = False
|
gamestate = False
|
||||||
if (event.type == pygame.KEYDOWN):
|
|
||||||
if (event.key == pygame.K_UP):
|
if (event.type == pygame.KEYDOWN):
|
||||||
movedirection["up"] = True
|
match event.key:
|
||||||
movedirection["down"] = False
|
case pygame.K_ESCAPE:
|
||||||
print("hoch")
|
print("ESC... stopping Game!")
|
||||||
if (event.type == pygame.KEYDOWN):
|
gamestate = False
|
||||||
if (event.key == pygame.K_DOWN):
|
|
||||||
movedirection["down"] = True
|
case pygame.K_UP:
|
||||||
movedirection["up"] = False
|
movedirection["up"] = True
|
||||||
print("runter")
|
movedirection["down"] = False
|
||||||
if (event.type == pygame.KEYDOWN):
|
print("hoch")
|
||||||
if (event.key == pygame.K_LEFT):
|
|
||||||
movedirection["left"] = True
|
case pygame.K_DOWN:
|
||||||
movedirection["right"] = False
|
movedirection["down"] = True
|
||||||
print("links")
|
movedirection["up"] = False
|
||||||
if (event.type == pygame.KEYDOWN):
|
print("runter")
|
||||||
if (event.key == pygame.K_RIGHT):
|
|
||||||
movedirection["right"] = True
|
case pygame.K_RIGHT:
|
||||||
movedirection["left"] = False
|
movedirection["right"] = True
|
||||||
print("rechts")
|
movedirection["left"] = False
|
||||||
if (event.type == pygame.KEYDOWN):
|
print("rechts")
|
||||||
if(event.key == pygame.K_ESCAPE):
|
|
||||||
gamestate = False
|
case pygame.K_LEFT:
|
||||||
|
movedirection["left"] = True
|
||||||
|
movedirection["right"] = False
|
||||||
|
print("links")
|
||||||
|
|
||||||
|
|
||||||
#TODO Check for wall-collision!!!!
|
#TODO Check for wall-collision!!!!
|
||||||
@@ -167,10 +164,16 @@ while(gamestate==True):
|
|||||||
if debug_mode:
|
if debug_mode:
|
||||||
#Adds visual character for vaild movementpath (DEBUG ONLY)
|
#Adds visual character for vaild movementpath (DEBUG ONLY)
|
||||||
for coord in movement_map:
|
for coord in movement_map:
|
||||||
|
coord:list
|
||||||
tmp = font1.render("X", 1, ROT)
|
tmp = font1.render("X", 1, ROT)
|
||||||
MAINSCREEN.blit(tmp, (coord["x"], coord["y"]))
|
result = MAINSCREEN.blit(tmp, (coord["x"], coord["y"]))
|
||||||
|
#Removes collided objects from list
|
||||||
|
if(pacman.check_collision(result) and len(movement_map) >= 1):
|
||||||
|
print(len(movement_map))
|
||||||
|
print(coord)
|
||||||
|
movement_map.remove(coord)
|
||||||
|
pass
|
||||||
|
|
||||||
pacman_pos_label = font1.render(F"x:{pacman.get_position()[0]} y:{pacman.get_position()[1]}", 1, SCHWARZ)
|
pacman_pos_label = font1.render(F"x:{pacman.get_position()[0]} y:{pacman.get_position()[1]}", 1, SCHWARZ)
|
||||||
fps_label = font1.render(F"FPS: {int(clock.get_fps())}", 1, SCHWARZ)
|
fps_label = font1.render(F"FPS: {int(clock.get_fps())}", 1, SCHWARZ)
|
||||||
|
|
||||||
|
|||||||
@@ -7,22 +7,37 @@ class GameObject():
|
|||||||
self._size = [sizex, sizey]
|
self._size = [sizex, sizey]
|
||||||
self._name = name
|
self._name = name
|
||||||
self._surface = surface
|
self._surface = surface
|
||||||
|
self._speed:int = 0
|
||||||
self._spritepath:str = ""
|
self._spritepath:str = ""
|
||||||
self._sprite:pygame.Surface
|
self._sprite:pygame.Surface
|
||||||
self._rect:pygame.rect
|
self._rect:pygame.rect.RectType
|
||||||
if(len(spritepath) > 0):
|
if(len(spritepath) > 0):
|
||||||
self._sprite = pygame.image.load(spritepath)
|
self._sprite = pygame.image.load(spritepath)
|
||||||
self._rect = self._sprite.get_rect()
|
self._rect = self._sprite.get_rect()
|
||||||
|
|
||||||
|
|
||||||
def move(self, x,y):
|
def move(self, x,y):
|
||||||
self._posx += x
|
self._posx += x
|
||||||
self._posy += y
|
self._posy += y
|
||||||
|
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
self._rect = pygame.Surface.blit(self._surface, self._sprite, (self._posx, self._posy))
|
self._rect = pygame.Surface.blit(self._surface, self._sprite, (self._posx, self._posy))
|
||||||
|
|
||||||
|
def check_collision(self, GameObject:pygame.rect.RectType):
|
||||||
|
#print(self._rect)
|
||||||
|
#print(GameObject)
|
||||||
|
if(pygame.Rect.colliderect(self._rect, GameObject) == True):
|
||||||
|
return True
|
||||||
|
else: False
|
||||||
|
|
||||||
def get_position(self):
|
def get_position(self):
|
||||||
return(self._posx, self._posy)
|
return(self._posx, self._posy)
|
||||||
|
|
||||||
|
def get_movespeed(self):
|
||||||
|
return self._speed
|
||||||
|
|
||||||
|
def set_movespeed(self, speed:int):
|
||||||
|
self._speed = speed
|
||||||
|
|
||||||
|
def set_position(self, x, y):
|
||||||
|
self._posx = x
|
||||||
|
self._posy = y
|
||||||
Reference in New Issue
Block a user