This commit is contained in:
Daniele Verducci 2023-01-02 20:40:11 +01:00
parent cb89bd8fa4
commit 1736931554

View File

@ -12,8 +12,8 @@ from time import time
MAP_WIN_WIDTH = 640
MAP_WIN_HEIGHT = 640
RAYCAST_WIN_WIDTH = MAP_WIN_WIDTH
RAYCAST_WIN_HEIGHT = MAP_WIN_HEIGHT
RAYCAST_WIN_WIDTH = 900
RAYCAST_WIN_HEIGHT = 600
DUNGEON_WIDTH = MAP_WIN_WIDTH
DUNGEON_HEIGHT = MAP_WIN_HEIGHT
PLAYER_SPEED = 10
@ -26,10 +26,10 @@ DEGREE_IN_RADIANTS = 0.01745329
MAP = [
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 1, 1, 0, 1,
1, 0, 0, 0, 0, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0, 1,
1, 0, 1, 0, 1, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 1, 1, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1,
]
@ -68,9 +68,9 @@ class Main:
if event.type == sdl2.SDL_KEYDOWN:
# Rotate player
if event.key.keysym.sym == sdl2.SDLK_LEFT:
self.player_position["r"] = self.player_position["r"] - 5*DEGREE_IN_RADIANTS
self.player_position["r"] = self.player_position["r"] + 10*DEGREE_IN_RADIANTS
elif event.key.keysym.sym == sdl2.SDLK_RIGHT:
self.player_position["r"] = self.player_position["r"] + 5*DEGREE_IN_RADIANTS
self.player_position["r"] = self.player_position["r"] - 10*DEGREE_IN_RADIANTS
# Compute deltax and deltay based on player direction
player_delta_x = math.cos(self.player_position["r"]) * PLAYER_SPEED
@ -235,9 +235,15 @@ class Main:
lineHeight = RAYCAST_WIN_HEIGHT
# Center line vertically in window
lineOffset = RAYCAST_WIN_HEIGHT / 2 - lineHeight / 2
# Simulate lighting based on wall incidence
color = sdl2.ext.Color(255,255,255,255)
if vertDist > horizDist:
color = sdl2.ext.Color(200,200,200,255)
# Draw line
for x in range(i*10, i*10+10):
sdl2.ext.draw.line(self.raycastSurface, sdl2.ext.Color(255,255,255,255), (x, int(lineOffset), x, int(lineOffset + lineHeight)))
for x in range(i*15, i*15+15):
sdl2.ext.draw.line(self.raycastSurface, color, (x, int(lineOffset), x, int(lineOffset + lineHeight)))
def dist(self, ax, ay, bx, by):
return math.sqrt((bx-ax)*(bx-ax) + (by-ay)*(by-ay))