diff --git a/map_0.py b/map_0.py new file mode 100644 index 0000000..d7248cc --- /dev/null +++ b/map_0.py @@ -0,0 +1,143 @@ +import os +import pygame +import json +import csv + + +pygame.init() +screen_width = 1920 +screen_height = 960 +screen = pygame.display.set_mode((screen_width, screen_height)) + +class Wall(pygame.sprite.Sprite): + def __init__(self, color, size, pos): + super().__init__() + self.image = pygame.Surface(size) + self.image.fill(color) + self.rect = self.image.get_rect(topleft=pos) + +# Load image for player +player_image = pygame.image.load("Player_right.png").convert_alpha() +player_image = pygame.transform.scale(player_image, (16, 16)) # Adjust player size to fit the new scale + +class Player(pygame.sprite.Sprite): + def __init__(self, color, walls): + super().__init__() + self.image = player_image + self.rect = self.image.get_rect() + self.foot_size = 15 + self.dt = 0 + self.speed_x = 1 + self.max_speed_x = 700 + self.speed_y = 1 + self.max_speed_y = 1500 + self.walls = walls + + def player_input(self, dt): + keys = pygame.key.get_pressed() + move_direction_x = 0 + move_direction_y = 0 + + if keys[pygame.K_w]: + move_direction_y -= 1 + if keys[pygame.K_s]: + move_direction_y += 1 + if keys[pygame.K_a]: + move_direction_x -= 1 + if keys[pygame.K_d]: + move_direction_x += 1 + + # Apply movement + self.speed_x = move_direction_x * self.max_speed_x + self.speed_y = move_direction_y * self.max_speed_y + + self.rect.x += self.speed_x * dt + self.rect.y += self.speed_y * dt + + +# Get the directory of the current script +script_dir = os.path.dirname(__file__) + +# Initialize Pygame + + +# Set up the display + +pygame.display.set_caption('Medival Guns') + +# Load JSON data +with open(os.path.join(script_dir, 'data.json')) as json_file: + level_data = json.load(json_file) + +# Load Collisions +collisions = [] +with open(os.path.join(script_dir, 'Collisions.csv'), 'r') as csv_file: + csv_reader = csv.reader(csv_file) + for row in csv_reader: + # Convert non-empty strings to integers, skip empty strings + row_data = [int(cell) if cell else 0 for cell in row] + collisions.append(row_data) + + +#WALLS +walls_group = pygame.sprite.Group() + +for i, row in enumerate(collisions): + for j, el in enumerate(row): + if el: + walls_group.add(Wall("purple", (60, 60), (60*j, 60*i))) + +#collision functioning + def collision(self): + collisions = pygame.sprite.spritecollide(self, self.walls, False) + if collisions: + for wall in collisions: + if abs(self.rect.bottom - wall.rect.top) < self.foot_size: + self.rect.bottom = wall.rect.top + self.speed_y = 0 + self.jumping_time = 0 + self.is_jumping = False + + elif abs(self.rect.top - wall.rect.bottom) < self.foot_size: + self.rect.top = wall.rect.bottom + self.speed_y = 0 + + elif abs(self.rect.right - wall.rect.left) < self.foot_size: + self.rect.right = wall.rect.left + self.speed_x = 0 + elif abs(self.rect.left - wall.rect.right) < self.foot_size: + self.rect.left = wall.rect.right + self.speed_x = 0 + +# Load images for LAYERS +layers = {} +for layer in level_data["layers"]: + layers[layer] = pygame.image.load(layer).convert_alpha() + layers[layer] = pygame.transform.scale(layers[layer], (screen_width, screen_height)) + +# Main game loop +running = True +clock = pygame.time.Clock() +dt = 0 + +# Main game loop +while running: + # Event handling + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + + # Draw layers + for layer_name, layer_image in layers.items(): + screen.blit(layer_image, (0, 0)) + + #Draw walls + walls_group.draw(screen) + + # Update the display + pygame.display.flip() + + dt = clock.tick(60) / 1000 # Get time passed since last tick in seconds + +# Quit Pygame +pygame.quit()