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