From 215d2c486580801b2d45a449faa1c202c48d824c Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 19 Aug 2026 18:27:21 +0200 Subject: [PATCH] Raycasting gemacht --- game.py | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/game.py b/game.py index 5145fff..013ac6f 100644 --- a/game.py +++ b/game.py @@ -1,5 +1,5 @@ import pygame - +import math SCREEN_WIDTH = 1280 SCREEN_HEIGHT = 720 @@ -41,7 +41,12 @@ class Game: self.player_width = 20 self.player_height = 20 - #self.circle = pygame.geometry.Circle(self.player_pos[0], self.player_pos[1], 30) + self.walls = [ + pygame.Rect(100, 100, 20, 50) + ] + + + # self.circle = pygame.geometry.Circle(self.player_pos[0], self.player_pos[1], 30) def run(self) -> None: while self.running: @@ -68,12 +73,25 @@ class Game: self.speed = 300 # Player-Draw - self.flashlight = pygame.draw.circle(self.display, (255, 255, 255, 0), self.flashlight_rect[0], self.flashlight_rect[1]) + # self.flashlight = pygame.draw.circle(self.display, (255, 255, 255, 0), self.flashlight_rect[0], self.flashlight_rect[1]) + for i in range(360): + end_pos = self.calculate_flashlight_radiate(i, self.player_pos, 50) + + # rect = pygame.Rect(self.player_pos[0], self.player_pos[1], end_pos[0], end_pos[1]) + + # pygame.draw.rect(self.display, (255, 255, 130), rect) + + pygame.draw.line(self.display, (255, 255, 130), self.player_pos, end_pos, width=3) pygame.draw.rect(self.display, self.color_item, self.item_rect) pygame.draw.rect(self.display, (255, 0, 0), self.player_rect) + + + for wall in self.walls: + pygame.draw.rect(self.display, "grey", wall) + # Smooth Movement keys = pygame.key.get_pressed() @@ -136,19 +154,16 @@ class Game: return distance <= circle_r - # def ausserhalb_des_bildschirms(self, x, y, width, height): - # if x > width: - # return False - # if x < 0: - # return False + def calculate_flashlight_radiate(self, degrees, start_pos, length): + angle_deg = degrees # Angle in degrees - # if y > height: - # return False - # if y < 0: - # return False - - # return True + # Convert degrees to radians for math functions + angle_rad = math.radians(angle_deg) + end_x = start_pos[0] + length * math.cos(angle_rad) + end_y = start_pos[1] - length * math.sin(angle_rad) # Minus because y increases downward in Pygame + end_pos = (int(end_x), int(end_y)) + return end_pos game = Game() game.run()