Started game.py
This commit is contained in:
parent
47cb06e75a
commit
870d541d96
|
@ -1 +1,2 @@
|
|||
__pycache__
|
||||
ref
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# Maze generators
|
||||
|
||||
Kyler Olsen
|
||||
|
||||
Both `visualize.py` and `game.py` require pygame to run:
|
||||
|
||||
```
|
||||
pip install pygame-ce
|
||||
```
|
||||
|
|
@ -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()
|
Loading…
Reference in New Issue