game.py adjustments

This commit is contained in:
Kyler Olsen 2024-11-10 20:52:34 -07:00
parent 4361021611
commit 901225ac21
1 changed files with 38 additions and 8 deletions

46
game.py
View File

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