game.py adjustments
This commit is contained in:
parent
4361021611
commit
901225ac21
46
game.py
46
game.py
|
@ -28,6 +28,11 @@ class Maze(maze.Maze):
|
|||
|
||||
def run(self, i=1_000_000) -> bool: return self.__maze.run(i)
|
||||
|
||||
@property
|
||||
def maze(self) -> maze.Maze:
|
||||
return self.__maze
|
||||
|
||||
|
||||
def draw_map(
|
||||
screen: pygame.Surface,
|
||||
player_pos: pygame.Vector2,
|
||||
|
@ -171,8 +176,14 @@ def game_loop():
|
|||
pygame.display.set_caption("Maze Raycaster")
|
||||
screen = pygame.display.set_mode((1280, 720))
|
||||
|
||||
top_view = pygame.Surface((screen.get_width() // 2, screen.get_height()))
|
||||
game_view = pygame.Surface((screen.get_width() // 2, screen.get_height()))
|
||||
show_top = False
|
||||
|
||||
if show_top:
|
||||
top_view = pygame.Surface(
|
||||
(screen.get_width() // 2, screen.get_height()))
|
||||
game_view = pygame.Surface(
|
||||
(screen.get_width() // 2, screen.get_height()))
|
||||
else: game_view = pygame.Surface((screen.get_width(), screen.get_height()))
|
||||
|
||||
myfont = pygame.font.SysFont("monospace", 15)
|
||||
|
||||
|
@ -181,23 +192,36 @@ def game_loop():
|
|||
dt = 0
|
||||
|
||||
player_pos = pygame.Vector2(6, 6)
|
||||
player_dir = pygame.Vector2(-4, 0)
|
||||
player_dir = pygame.Vector2(4, 0)
|
||||
|
||||
# world_map = Maze(maze.RecursiveBacktracker(63), 4)
|
||||
# world_map = Maze(maze.VectorWrapper(maze.BinaryTree(31)), 4)
|
||||
# world_map = Maze(maze.Sidewinder(63), 4)
|
||||
# world_map = Maze(maze.Sidewinder(63, run_param=0.2), 4)
|
||||
# world_map = Maze(maze.RecursiveDivision(63), 4)
|
||||
# world_map = Maze(maze.RecursiveDivision(63, binary=True), 4)
|
||||
# world_map = Maze(maze.VectorWrapper(maze.Prim(31)), 4)
|
||||
world_map = Maze(maze.VectorWrapper(maze.Wilson(31)), 4)
|
||||
# world_map = Maze(maze.VectorWrapper(maze.Wilson(7)), 4)
|
||||
world_map.run()
|
||||
|
||||
# world_map = Maze(maze.VectorWrapper.convert(world_map.maze), 4)
|
||||
|
||||
s = 0
|
||||
s_param = 0.35
|
||||
|
||||
while running:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
|
||||
draw_map(top_view, player_pos, player_dir, world_map)
|
||||
if isinstance(world_map.maze, maze.VectorWrapper) and \
|
||||
isinstance(world_map.maze.maze, maze.OriginShift) and s > s_param:
|
||||
world_map = Maze(
|
||||
maze.VectorWrapper.convert(world_map.maze), 4)
|
||||
world_map.step()
|
||||
s -= s_param
|
||||
|
||||
if show_top: draw_map(top_view, player_pos, player_dir, world_map)
|
||||
draw_game(game_view, player_pos, player_dir, world_map)
|
||||
|
||||
keys = pygame.key.get_pressed()
|
||||
|
@ -217,14 +241,19 @@ def game_loop():
|
|||
player_dir.scale_to_length(player_dir.length() / 1.01)
|
||||
if keys[pygame.K_m]:
|
||||
player_dir.scale_to_length(player_dir.length() * 1.01)
|
||||
# if keys[pygame.K_t]:
|
||||
# show_top = not show_top
|
||||
if keys[pygame.K_ESCAPE]:
|
||||
running = False
|
||||
|
||||
screen.blit(top_view, (0,0))
|
||||
screen.blit(game_view, (screen.get_width() // 2,0))
|
||||
if show_top:
|
||||
screen.blit(top_view, (0,0))
|
||||
screen.blit(game_view, (screen.get_width() // 2,0))
|
||||
else: screen.blit(game_view, (0,0))
|
||||
|
||||
label = myfont.render(
|
||||
f"Player: {player_pos} {player_dir} {round(player_dir.length())}",
|
||||
f"Player: {player_pos} {player_dir} {round(player_dir.length())}"
|
||||
f" | FPS: {int(clock.get_fps())} | Change: {round(s, 2)}",
|
||||
True, (192,192,192)
|
||||
)
|
||||
screen.blit(label, (10, 10))
|
||||
|
@ -232,6 +261,7 @@ def game_loop():
|
|||
pygame.display.update()
|
||||
|
||||
dt = clock.tick(60) / 1000
|
||||
s += dt
|
||||
|
||||
pygame.quit()
|
||||
|
||||
|
|
Loading…
Reference in New Issue