From 870d541d96da2215fb9d61dd32a42f5012f6efd4 Mon Sep 17 00:00:00 2001 From: Kyler Date: Thu, 7 Nov 2024 22:21:42 -0700 Subject: [PATCH] Started game.py --- .gitignore | 1 + README.md | 10 ++++++++ game.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 README.md create mode 100644 game.py diff --git a/.gitignore b/.gitignore index bee8a64..e831db0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ __pycache__ +ref diff --git a/README.md b/README.md new file mode 100644 index 0000000..c4c0106 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Maze generators + +Kyler Olsen + +Both `visualize.py` and `game.py` require pygame to run: + +``` +pip install pygame-ce +``` + diff --git a/game.py b/game.py new file mode 100644 index 0000000..8e32d96 --- /dev/null +++ b/game.py @@ -0,0 +1,72 @@ +import pygame +import math + +def draw_map(screen, player_pos, player_dir): + screen.fill(pygame.Color(64,64,64)) + + pygame.draw.rect(screen, "blue", pygame.Rect(player_pos-(2.5,2.5),(5,5))) + pygame.draw.line(screen, "blue", player_pos, player_pos+(player_dir)) + +def game_loop(): + + pygame.init() + 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())) + + myfont = pygame.font.SysFont("monospace", 15) + + clock = pygame.time.Clock() + running = True + dt = 0 + + player_pos = pygame.Vector2(200, 200) + player_dir = pygame.Vector2(-100, 0) + + while running: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + game_view.fill(pygame.Color(0,0,0)) + + draw_map(top_view, player_pos, player_dir) + + keys = pygame.key.get_pressed() + if keys[pygame.K_w]: + player_pos += player_dir * dt + if keys[pygame.K_s]: + player_pos -= player_dir * dt + if keys[pygame.K_a]: + player_pos -= player_dir.rotate(90) * dt + if keys[pygame.K_d]: + player_pos += player_dir.rotate(90) * dt + if keys[pygame.K_q]: + player_dir.rotate_ip(-90 * dt) + if keys[pygame.K_e]: + player_dir.rotate_ip(90 * dt) + if keys[pygame.K_n]: + 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_ESCAPE]: + running = False + + screen.blit(top_view, (0,0)) + screen.blit(game_view, (screen.get_width() // 2,0)) + + label = myfont.render( + f"Player: {player_pos} {player_dir} {round(player_dir.length())}", + True, (192,192,192) + ) + screen.blit(label, (10, 10)) + + pygame.display.update() + + dt = clock.tick(60) / 1000 + + pygame.quit() + +game_loop()