init commit

This commit is contained in:
2024-10-22 16:15:06 +02:00
commit 5175cfe3f1
10 changed files with 1687 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
starting_point_x,starting_point_y,len_x,len_y
0,0,620,3020
0,0,3120,670
0,2550,3120,470
2550,0,570,3020
970,1070,440,310
970,1500,220,270
1190,1600,280,170
980,1900,500,200
1640,1035,490,345
2130,1175,265,210
1795,1780,355,315
2150,1900,245,195
1 starting_point_x starting_point_y len_x len_y
2 0 0 620 3020
3 0 0 3120 670
4 0 2550 3120 470
5 2550 0 570 3020
6 970 1070 440 310
7 970 1500 220 270
8 1190 1600 280 170
9 980 1900 500 200
10 1640 1035 490 345
11 2130 1175 265 210
12 1795 1780 355 315
13 2150 1900 245 195
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

+1556
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 965 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

+118
View File
@@ -0,0 +1,118 @@
# Example file showing a basic pygame "game loop"
import pygame
import math
import csv
# pygame setup
pygame.init()
screen = pygame.display.set_mode((1080,720))
clock = pygame.time.Clock()
running = True
dt = 0
player_sprite = pygame.Rect(100,100,50,50)
mur = pygame.Rect(500,100,100,100)
class Player:
def __init__(self)-> None:
self.x = 800
self.y = 900
self.mov_speed = 8
self.rotate_speed = 5
self.angle = 90
def rotate(self, angle: math.degrees)-> None:
self.angle += angle*self.rotate_speed
def move(self, mov: int)-> None:
new_x = self.x + self.mov_speed*mov*math.cos(math.radians(self.angle))
new_y = self.y + self.mov_speed*mov*math.sin(math.radians(self.angle))
if(game.test_collision(pygame.Rect(new_x-50, new_y-50, 100, 100), game.collisions) == False):
self.x = new_x
self.y = new_y
class Game:
def __init__(self):
self.is_paused = False
pygame.font.init()
self.font = pygame.font.SysFont('Comic Sans MS', 30)
self.load_sprites()
self.load_collisions()
def load_sprites(self):
self.perso_sprite = pygame.image.load("assets/perso_sprite.png")
self.map_sprite = pygame.image.load("assets/map3.png")
def load_collisions(self):
self.collisions = []
with open('assets/collisions.csv', 'r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
self.collisions.append(pygame.Rect(float(row["starting_point_x"]), float(row["starting_point_y"]), float(row["len_x"]), float(row["len_y"])))
def test_collision(self, objet: pygame.Rect, l_collisions) -> bool:
for col in l_collisions:
if objet.colliderect(col):
return True
return False
def display_debug_text(self):
angle_surface = self.font.render("angle: "+str(player.angle), False, (0, 0, 0))
x_surface = self.font.render("x: "+str(player.x), False, (0, 0, 0))
y_surface = self.font.render("y: "+str(player.y), False, (0, 0, 0))
screen.blit(angle_surface, (0,0))
screen.blit(x_surface, (0,30))
screen.blit(y_surface, (0,60))
#pygame.draw.rect(screen, "blue",pygame.Rect(player.x-50, player.y-50, 100, 100))
def check_input(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_z]:
_ = player.move(1)
if keys[pygame.K_s]:
_ = player.move(-1)
if keys[pygame.K_q]:
player.rotate(-1)
if keys[pygame.K_d]:
player.rotate(1)
def draw_player(self):
#pygame.draw.rect(screen, "red", pygame.Rect(player.x, player.y, 50, 50))
img = pygame.transform.rotozoom(self.perso_sprite, -player.angle-90, 0.2)
screen.blit(img, (540-img.get_rect().centerx, 360-img.get_rect().centery))
def display_all(self):
# fill the screen with a color to wipe away anything from last frame
screen.fill("purple")
screen.blit(self.map_sprite, (540-player.x, 360-player.y))
self.draw_player()
# We display it at the end so it's on top of all
self.display_debug_text()
# flip() the display to put your work on screen
pygame.display.flip()
player = Player()
game = Game()
while running:
# poll for events
# pygame.QUIT event means the user clicked X to close your window
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
game.check_input()
game.display_all()
# limits FPS to 60
# dt is delta time in seconds since last frame, used for framerate-
# independent physics.
dt = clock.tick(60) / 1000
pygame.quit()