Started game.py

This commit is contained in:
Kyler Olsen 2024-11-07 22:21:42 -07:00
parent 47cb06e75a
commit 870d541d96
3 changed files with 83 additions and 0 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
__pycache__ __pycache__
ref

10
README.md Normal file
View File

@ -0,0 +1,10 @@
# Maze generators
Kyler Olsen
Both `visualize.py` and `game.py` require pygame to run:
```
pip install pygame-ce
```

72
game.py Normal file
View File

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