From: Skullheadx <704277@pdsb.net> Date: Sat, 9 Jul 2022 20:33:33 +0000 (-0400) Subject: import level files and set initial pos for player and enemy X-Git-Url: http://git.skullheadx.com/index.css?a=commitdiff_plain;h=e74dd1a16487f33650e4c2cbb7375a5369e17f5c;p=Pygame-Jam.git import level files and set initial pos for player and enemy --- diff --git a/Assets/world/blocks/ENEMY.png b/Assets/world/blocks/ENEMY.png new file mode 100644 index 0000000..7ab0889 Binary files /dev/null and b/Assets/world/blocks/ENEMY.png differ diff --git a/Assets/world/blocks/PLAYER.png b/Assets/world/blocks/PLAYER.png new file mode 100644 index 0000000..59817c8 Binary files /dev/null and b/Assets/world/blocks/PLAYER.png differ diff --git a/Game.py b/Game.py index bca5cee..d0ef0d5 100644 --- a/Game.py +++ b/Game.py @@ -13,25 +13,28 @@ from UI.DashMeter import DashMeter class Game: - def __init__(self): - self.collision_layer = {"none":set(),"world": set(), "player": set(), "enemy": set(), "pet": set()} + def __init__(self, level): + self.collision_layer = {"none": set(), "world": set(), "player": set(), "enemy": set(), "pet": set()} - self.player = Player(center, self.collision_layer["player"], - [self.collision_layer["enemy"], self.collision_layer["world"]], - [self.collision_layer["enemy"]]) - # self.pet = Pet(center, self.collision_layer["pet"], [self.collision_layer["world"]]) + # self.load_world(level) self.world = World(self.collision_layer) - self.enemies = [Enemy((SCREEN_WIDTH *3/ 4, SCREEN_HEIGHT / 2), self.collision_layer["enemy"], - [self.collision_layer["player"], self.collision_layer["world"]])] - - + enemy_positions, player_position = self.world.load_world(level) + self.player = Player(player_position, self.collision_layer["player"], + [self.collision_layer["enemy"], self.collision_layer["world"]], + [self.collision_layer["enemy"]]) + # self.pet = Pet(center, self.collision_layer["pet"], [self.collision_layer["world"]]) + self.enemies = [Enemy(pos, self.collision_layer["enemy"], + [self.collision_layer["player"], self.collision_layer["world"]]) for pos in + enemy_positions] self.scene = EndScreen() self.dashMeter = DashMeter(self.player.dashCooldown) self.level = 1 self.scene.level = self.level + # def load_world(self, level): + def update(self, delta): Setup.camera_offset = self.player.update(delta) if self.player.dead: @@ -50,21 +53,18 @@ class Game: # self.pet.update(delta, self.player, self.camera_pos) def draw(self, surf): - screen.fill((255, 255, 255)) + screen.fill((0, 191, 255)) self.world.draw(surf) for enemy in self.enemies: enemy.draw(surf) - self.player.draw(surf) self.dashMeter.update(self.player.lastDash) self.dashMeter.draw(surf) - + if self.player.dead: self.scene.update() self.scene.draw() - - # Debug Lines. DO NOT CROSS THEM! pg.draw.line(surf, (255, 0, 0), -Setup.camera_offset, pg.Vector2(SCREEN_WIDTH, -Setup.camera_offset.y), 10) diff --git a/LevelCreator.py b/LevelCreator.py index 61b9904..920f9ed 100644 --- a/LevelCreator.py +++ b/LevelCreator.py @@ -1,11 +1,12 @@ import os - import numpy as np -import pygame.mouse from Function.createText import createText from Setup import * +import tkinter as tk +from tkinter import filedialog + class LevelCreator: canvas_layers = 5 @@ -42,7 +43,9 @@ class LevelCreator: Button((0, 0), "+Layer", self.increase_layer), Button((0, 0), f"{self.collision_layer=}", self.toggle_collidable), Button((0, 0), "Toggle Hitboxes", self.toggle_show_hitboxes), - Button((0, 0), "Export", self.export)] + Button((0, 0), "Import", self.import_level), + Button((0, 0), "Export", self.export), + ] self.level = -2 @@ -78,6 +81,31 @@ class LevelCreator: except FileExistsError: counter += 1 + def import_level(self): + root = tk.Tk() + root.withdraw() + + filename = filedialog.askopenfilename(initialdir="./Levels", title="Select A File", + filetypes=((".txt", "*.txt"), ("all files", "*.*"))) + if filename == '': + return + with open(filename, 'r', encoding='utf-8') as f: + file_contents = f.read().split("\n") + + # with open(path.join("Levels", f'Level{1}.txt'), 'r') as f: + # file_contents = f.read().split("\n") + + for i in range(0, len(file_contents) - 1, 3): + layer = file_contents[i].split("|") + pos = file_contents[i + 1].split("|") + texture = file_contents[i + 2].split("|") + + for l, p, t in zip(layer, pos, texture): + if p == "": + break + x, y = p.split(',') + self.add_block(self.apply_transformations((float(x), float(y))), self.blocks[l], t, i) + def toggle_collidable(self): if self.collision_layer == "none": self.collision_layer = "world" @@ -104,10 +132,14 @@ class LevelCreator: button = self.buttons[2] button.__init__(button.position, f"{self.current_layer=}", self.upd_layer) - def fit_to_grid(self, pt): + def fit_to_grid(self, pt, use_floor=True): pos = self.reverse_transformations(pg.Vector2(pt)) - return pg.Vector2((pos.x // EditorBlock.width) * EditorBlock.width, - (pos.y // EditorBlock.height) * EditorBlock.height) + if use_floor: + return pg.Vector2((pos.x // EditorBlock.width) * EditorBlock.width, + (pos.y // EditorBlock.height) * EditorBlock.height) + else: + return pg.Vector2(round(pos.x / EditorBlock.width) * EditorBlock.width, + round(pos.y / EditorBlock.height) * EditorBlock.height) def apply_rect_transformations(self, rect): top_left = np.array([rect.left, rect.top, 1]) @@ -230,7 +262,7 @@ class LevelCreator: display_img = EditorBlock.textures[self.textures[self.current_texture]].copy() display_img.set_alpha(100) surf.blit(pg.transform.scale(display_img, self.apply_rect_transformations(display_img.get_rect()).size), - self.apply_transformations(self.fit_to_grid(pygame.mouse.get_pos()))) + self.apply_transformations(self.fit_to_grid(pg.mouse.get_pos(), use_floor=True))) for button in self.buttons: button.draw(surf) diff --git a/Levels/Level1.txt b/Levels/Level1.txt index 401a5e4..a4ded54 100644 --- a/Levels/Level1.txt +++ b/Levels/Level1.txt @@ -1,6 +1,6 @@ -none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world -1400.0,750.0|1300.0,800.0|1350.0,750.0|1300.0,750.0|1250.0,750.0|1250.0,800.0|1200.0,750.0|1050.0,750.0|1000.0,750.0|950.0,750.0|900.0,750.0|850.0,750.0|800.0,750.0|750.0,750.0|700.0,750.0|650.0,750.0|600.0,750.0|550.0,750.0|500.0,750.0|450.0,750.0|400.0,750.0|350.0,750.0|300.0,750.0|250.0,750.0|200.0,750.0|150.0,750.0|100.0,750.0|50.0,750.0|0.0,750.0|0.0,800.0|50.0,800.0|100.0,800.0|1100.0,750.0|1150.0,750.0|1200.0,800.0|1150.0,800.0|1100.0,800.0|1050.0,800.0|1000.0,800.0|800.0,800.0|750.0,800.0|700.0,800.0|650.0,800.0|600.0,800.0|250.0,800.0|200.0,800.0|150.0,800.0|1450.0,700.0|1500.0,700.0|1750.0,700.0|1800.0,700.0|1850.0,700.0|1900.0,700.0|1950.0,700.0|2000.0,700.0|2050.0,700.0|2050.0,750.0|2000.0,750.0|1950.0,750.0|1900.0,750.0|1850.0,750.0|1800.0,750.0|1700.0,700.0|1650.0,700.0|1600.0,700.0|1550.0,700.0|1750.0,750.0|1700.0,750.0|1650.0,750.0|1600.0,750.0|1550.0,750.0|1500.0,750.0|1450.0,750.0|2100.0,750.0|2450.0,700.0|2450.0,650.0|2450.0,750.0|2500.0,750.0|2500.0,700.0|2500.0,650.0|2500.0,600.0|2550.0,600.0|2550.0,650.0|2550.0,700.0|2550.0,750.0|2600.0,750.0|2600.0,700.0|2600.0,650.0|2600.0,600.0|2400.0,800.0|2450.0,800.0|2650.0,800.0|2600.0,800.0|2550.0,800.0|2500.0,800.0|2300.0,850.0|2350.0,850.0|2400.0,850.0|2450.0,850.0|2500.0,850.0|2550.0,850.0|2600.0,850.0|2650.0,850.0|2650.0,900.0|2600.0,900.0|2250.0,850.0|2250.0,900.0|2300.0,900.0|2350.0,900.0|2400.0,900.0|2450.0,900.0|2500.0,900.0|2550.0,900.0|2650.0,950.0|2600.0,950.0|2550.0,950.0|2500.0,950.0|2450.0,950.0|2400.0,950.0|2350.0,950.0|2300.0,950.0|2250.0,950.0|2200.0,950.0|2150.0,950.0|2100.0,950.0|2050.0,950.0|2000.0,950.0|1950.0,950.0|1900.0,950.0|1850.0,950.0|1800.0,950.0|1750.0,950.0|1700.0,950.0|1650.0,950.0|1600.0,950.0|1550.0,950.0|1500.0,950.0|1450.0,950.0|1400.0,950.0|1350.0,950.0|1300.0,950.0|1250.0,950.0|1200.0,950.0|1150.0,950.0|1100.0,950.0|1050.0,950.0|1000.0,950.0|950.0,950.0|900.0,950.0|850.0,950.0|800.0,950.0|750.0,950.0|700.0,950.0|650.0,950.0|600.0,950.0|550.0,950.0|450.0,900.0|400.0,900.0|350.0,900.0|300.0,900.0|250.0,900.0|200.0,900.0|150.0,900.0|100.0,900.0|50.0,900.0|0.0,900.0|0.0,950.0|50.0,950.0|100.0,950.0|150.0,950.0|200.0,950.0|250.0,950.0|300.0,950.0|350.0,950.0|400.0,950.0|450.0,950.0|500.0,950.0|500.0,900.0|550.0,900.0|600.0,900.0|650.0,900.0|700.0,900.0|750.0,900.0|800.0,900.0|850.0,900.0|900.0,900.0|1000.0,900.0|1050.0,900.0|1100.0,900.0|1150.0,900.0|1200.0,900.0|1250.0,900.0|1300.0,900.0|1350.0,900.0|1400.0,900.0|1450.0,900.0|1500.0,900.0|1400.0,850.0|1450.0,850.0|1500.0,850.0|1550.0,850.0|950.0,900.0|1600.0,850.0|1650.0,850.0|1700.0,850.0|1750.0,850.0|1800.0,850.0|1850.0,850.0|1900.0,850.0|1950.0,850.0|2000.0,850.0|2050.0,850.0|2100.0,850.0|2150.0,850.0|2200.0,850.0|2200.0,900.0|2150.0,900.0|2100.0,900.0|2050.0,900.0|2000.0,900.0|1950.0,900.0|1900.0,900.0|1850.0,900.0|1800.0,900.0|1750.0,900.0|1700.0,900.0|1650.0,900.0|1600.0,900.0|1550.0,900.0|1300.0,850.0|1250.0,850.0|1200.0,850.0|1150.0,850.0|1100.0,850.0|1050.0,850.0|1000.0,850.0|750.0,850.0|700.0,850.0|650.0,850.0|600.0,850.0|250.0,850.0|200.0,850.0|150.0,850.0|100.0,850.0|50.0,850.0|0.0,850.0|300.0,800.0|350.0,800.0|400.0,800.0|450.0,800.0|500.0,800.0|550.0,800.0|850.0,800.0|900.0,800.0|950.0,800.0|1350.0,800.0|1400.0,800.0|1450.0,800.0|1500.0,800.0|1550.0,800.0|1600.0,800.0|1650.0,800.0|1700.0,800.0|1750.0,800.0|1800.0,800.0|1850.0,800.0|1900.0,800.0|1950.0,800.0|2000.0,800.0|2050.0,800.0|2100.0,800.0|2150.0,800.0|1350.0,850.0|2100.0,700.0|950.0,850.0|900.0,850.0|850.0,850.0|800.0,850.0|550.0,850.0|500.0,850.0|450.0,850.0|400.0,850.0|350.0,850.0|300.0,850.0|800.0,550.0|800.0,600.0|750.0,600.0|750.0,650.0|800.0,650.0|850.0,650.0|0.0,700.0|50.0,700.0|100.0,700.0|150.0,700.0|200.0,700.0|250.0,700.0|300.0,700.0|350.0,700.0|400.0,700.0|450.0,700.0|500.0,700.0|550.0,700.0|600.0,700.0|650.0,700.0|700.0,700.0|750.0,700.0|800.0,700.0|850.0,700.0|900.0,700.0|950.0,700.0|1000.0,700.0|1050.0,700.0|1100.0,700.0|1150.0,700.0|1200.0,700.0|1250.0,700.0|1300.0,700.0|1350.0,700.0|1400.0,700.0|1450.0,650.0|1500.0,650.0|1550.0,650.0|1600.0,650.0|1650.0,650.0|1700.0,650.0|1750.0,650.0|1800.0,650.0|1850.0,650.0|1900.0,650.0|1950.0,650.0|2000.0,650.0|2050.0,650.0|2100.0,650.0|2150.0,700.0|2150.0,750.0|2200.0,800.0|2250.0,800.0|2300.0,800.0|2350.0,800.0|2500.0,550.0|2550.0,550.0|2600.0,550.0|2650.0,600.0|2450.0,600.0|2400.0,650.0|2400.0,700.0|2400.0,750.0|2650.0,650.0|2650.0,700.0|2650.0,750.0 -DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONE|DIRT|STONE|STONE|STONE|STONEDIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|DIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE +none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|none|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world|world +1400.0,750.0|1300.0,800.0|1350.0,750.0|1300.0,750.0|1250.0,750.0|1250.0,800.0|1200.0,750.0|1050.0,750.0|1000.0,750.0|950.0,750.0|900.0,750.0|850.0,750.0|800.0,750.0|750.0,750.0|700.0,750.0|650.0,750.0|600.0,750.0|550.0,750.0|500.0,750.0|450.0,750.0|400.0,750.0|350.0,750.0|300.0,750.0|250.0,750.0|200.0,750.0|150.0,750.0|100.0,750.0|50.0,750.0|0.0,750.0|0.0,800.0|50.0,800.0|100.0,800.0|1100.0,750.0|1150.0,750.0|1200.0,800.0|1150.0,800.0|1100.0,800.0|1050.0,800.0|1000.0,800.0|800.0,800.0|750.0,800.0|700.0,800.0|650.0,800.0|600.0,800.0|250.0,800.0|200.0,800.0|150.0,800.0|1450.0,700.0|1500.0,700.0|1750.0,700.0|1800.0,700.0|1850.0,700.0|1900.0,700.0|1950.0,700.0|2000.0,700.0|2050.0,700.0|2050.0,750.0|2000.0,750.0|1950.0,750.0|1900.0,750.0|1850.0,750.0|1800.0,750.0|1700.0,700.0|1650.0,700.0|1600.0,700.0|1550.0,700.0|1750.0,750.0|1700.0,750.0|1650.0,750.0|1600.0,750.0|1550.0,750.0|1500.0,750.0|1450.0,750.0|2100.0,750.0|2450.0,700.0|2450.0,650.0|2450.0,750.0|2500.0,750.0|2500.0,700.0|2500.0,650.0|2500.0,600.0|2550.0,600.0|2550.0,650.0|2550.0,700.0|2550.0,750.0|2600.0,750.0|2600.0,700.0|2600.0,650.0|2600.0,600.0|2400.0,800.0|2450.0,800.0|2650.0,800.0|2600.0,800.0|2550.0,800.0|2500.0,800.0|2300.0,850.0|2350.0,850.0|2400.0,850.0|2450.0,850.0|2500.0,850.0|2550.0,850.0|2600.0,850.0|2650.0,850.0|2650.0,900.0|2600.0,900.0|2250.0,850.0|2250.0,900.0|2300.0,900.0|2350.0,900.0|2400.0,900.0|2450.0,900.0|2500.0,900.0|2550.0,900.0|2650.0,950.0|2600.0,950.0|2550.0,950.0|2500.0,950.0|2450.0,950.0|2400.0,950.0|2350.0,950.0|2300.0,950.0|2250.0,950.0|2200.0,950.0|2150.0,950.0|2100.0,950.0|2050.0,950.0|2000.0,950.0|1950.0,950.0|1900.0,950.0|1850.0,950.0|1800.0,950.0|1750.0,950.0|1700.0,950.0|1650.0,950.0|1600.0,950.0|1550.0,950.0|1500.0,950.0|1450.0,950.0|1400.0,950.0|1350.0,950.0|1300.0,950.0|1250.0,950.0|1200.0,950.0|1150.0,950.0|1100.0,950.0|1050.0,950.0|1000.0,950.0|950.0,950.0|900.0,950.0|850.0,950.0|800.0,950.0|750.0,950.0|700.0,950.0|650.0,950.0|600.0,950.0|550.0,950.0|450.0,900.0|400.0,900.0|350.0,900.0|300.0,900.0|250.0,900.0|200.0,900.0|150.0,900.0|100.0,900.0|50.0,900.0|0.0,900.0|0.0,950.0|50.0,950.0|100.0,950.0|150.0,950.0|200.0,950.0|250.0,950.0|300.0,950.0|350.0,950.0|400.0,950.0|450.0,950.0|500.0,950.0|500.0,900.0|550.0,900.0|600.0,900.0|650.0,900.0|700.0,900.0|750.0,900.0|800.0,900.0|850.0,900.0|900.0,900.0|1000.0,900.0|1050.0,900.0|1100.0,900.0|1150.0,900.0|1200.0,900.0|1250.0,900.0|1300.0,900.0|1350.0,900.0|1400.0,900.0|1450.0,900.0|1500.0,900.0|1400.0,850.0|1450.0,850.0|1500.0,850.0|1550.0,850.0|950.0,900.0|1600.0,850.0|1650.0,850.0|1700.0,850.0|1750.0,850.0|1800.0,850.0|1850.0,850.0|1900.0,850.0|1950.0,850.0|2000.0,850.0|2050.0,850.0|2100.0,850.0|2150.0,850.0|2200.0,850.0|2200.0,900.0|2150.0,900.0|2100.0,900.0|2050.0,900.0|2000.0,900.0|1950.0,900.0|1900.0,900.0|1850.0,900.0|1800.0,900.0|1750.0,900.0|1700.0,900.0|1650.0,900.0|1600.0,900.0|1550.0,900.0|1300.0,850.0|1250.0,850.0|1200.0,850.0|1150.0,850.0|1100.0,850.0|1050.0,850.0|1000.0,850.0|750.0,850.0|700.0,850.0|650.0,850.0|600.0,850.0|250.0,850.0|200.0,850.0|150.0,850.0|100.0,850.0|50.0,850.0|0.0,850.0|300.0,800.0|350.0,800.0|400.0,800.0|450.0,800.0|500.0,800.0|550.0,800.0|850.0,800.0|900.0,800.0|950.0,800.0|1350.0,800.0|1400.0,800.0|1450.0,800.0|1500.0,800.0|1550.0,800.0|1600.0,800.0|1650.0,800.0|1700.0,800.0|1750.0,800.0|1800.0,800.0|1850.0,800.0|1900.0,800.0|1950.0,800.0|2000.0,800.0|2050.0,800.0|2100.0,800.0|2150.0,800.0|1350.0,850.0|2100.0,700.0|950.0,850.0|900.0,850.0|850.0,850.0|800.0,850.0|550.0,850.0|500.0,850.0|450.0,850.0|400.0,850.0|350.0,850.0|300.0,850.0|800.0,550.0|800.0,600.0|750.0,600.0|750.0,650.0|800.0,650.0|850.0,650.0|0.0,700.0|50.0,700.0|100.0,700.0|150.0,700.0|200.0,700.0|250.0,700.0|300.0,700.0|350.0,700.0|400.0,700.0|450.0,700.0|500.0,700.0|550.0,700.0|600.0,700.0|650.0,700.0|700.0,700.0|750.0,700.0|800.0,700.0|850.0,700.0|900.0,700.0|950.0,700.0|1000.0,700.0|1050.0,700.0|1100.0,700.0|1150.0,700.0|1200.0,700.0|1250.0,700.0|1300.0,700.0|1350.0,700.0|1400.0,700.0|1450.0,650.0|1500.0,650.0|1550.0,650.0|1600.0,650.0|1650.0,650.0|1700.0,650.0|1750.0,650.0|1800.0,650.0|1850.0,650.0|1900.0,650.0|1950.0,650.0|2000.0,650.0|2050.0,650.0|2100.0,650.0|2150.0,700.0|2150.0,750.0|2200.0,800.0|2250.0,800.0|2300.0,800.0|2350.0,800.0|2500.0,550.0|2550.0,550.0|2600.0,550.0|2650.0,600.0|2450.0,600.0|2400.0,650.0|2400.0,700.0|2400.0,750.0|2650.0,650.0|2650.0,700.0|2650.0,750.0|700.0,650.0|2050.0,600.0|2650.0,1000.0|2600.0,1000.0|2550.0,1000.0|2500.0,1000.0|2450.0,1000.0|2400.0,1000.0|2350.0,1000.0|2300.0,1000.0|2250.0,1000.0|2200.0,1000.0|2150.0,1000.0|2100.0,1000.0|2050.0,1000.0|2350.0,1050.0|2700.0,1050.0|2650.0,1050.0|2600.0,1050.0|2550.0,1050.0|2500.0,1050.0|2450.0,1050.0|2400.0,1050.0|2000.0,1000.0|1950.0,1000.0|1900.0,1000.0|1850.0,1000.0|1850.0,1050.0|1900.0,1050.0|1950.0,1050.0|2000.0,1050.0|2050.0,1050.0|2100.0,1050.0|2150.0,1050.0|2200.0,1050.0|2250.0,1050.0|2300.0,1050.0|1800.0,1000.0|1800.0,1050.0|1750.0,1050.0|1700.0,1050.0|1600.0,1000.0|1650.0,1000.0|1700.0,1000.0|1750.0,1000.0|1650.0,1050.0|1600.0,1050.0 +DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|DIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONE|DIRT|STONE|STONE|STONE|STONEDIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|GRASS|DIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONEDIRT|STONE|STONE|STONE|STONE|STONE|STONE|STONE|PLAYER|ENEMY|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE|STONE diff --git a/Player.py b/Player.py index 1a65cab..59f9b18 100644 --- a/Player.py +++ b/Player.py @@ -25,7 +25,7 @@ class Player(Actor): def __init__(self, pos, collision_layer, collision_mask, can_hurt): super().__init__(pos, collision_layer, collision_mask) - self.initial_position = pg.Vector2(pos) + # self.initial_position = pg.Vector2(pos) self.dashCooldown = timedelta(seconds=2, microseconds=500000) self.timeBetweenDoublePress = timedelta(seconds=0, microseconds=500000) self.dashSpeed = 5 @@ -44,7 +44,7 @@ class Player(Actor): self.starting_potions = 999 self.potion_bag = [Potion(self)] for i in range(self.starting_potions): - self.potion_bag.append(Potion(self)) + self.potion_bag.append(Potion(self)) # use one liner self.weapon = Melee(self.position, (-Melee.width / 2 + 7, Melee.height / 2 + self.height / 3 - 8), (-5, Melee.height), self.width, -1, -25) @@ -100,7 +100,7 @@ class Player(Actor): self.display_offsets["weapon"] = pg.Vector2(0, 0) self.current_frame = (self.current_frame + 0.1) % len(self.idle_frames) - return self.position - self.initial_position + return self.position - center def handle_input(self): pressed = pygame.key.get_pressed() @@ -175,4 +175,4 @@ class Player(Actor): # text current_health_display = createText(0, 0, 30, white, "Regular", str(self.health) + "/100")[0] text_rect = current_health_display.get_rect(center=background_rect.center) - surf.blit(current_health_display, text_rect) \ No newline at end of file + surf.blit(current_health_display, text_rect) diff --git a/World.py b/World.py index 5b2b69c..e82f2fe 100644 --- a/World.py +++ b/World.py @@ -8,24 +8,30 @@ class World: def __init__(self, collision_layer): self.collision_layer = collision_layer self.blocks = [] - self.level = 1 - self.add_world(self.level) - def add_world(self, level): + def load_world(self, level): with open(path.join("Levels", f'Level{level}.txt'), 'r') as f: file_contents = f.read().split("\n") - - for i in range(0,len(file_contents)-1,3): + out = [[], center] + for i in range(0, len(file_contents) - 1, 3): layer = file_contents[i].split("|") - pos = file_contents[i+1].split("|") - texture = file_contents[i+2].split("|") + pos = file_contents[i + 1].split("|") + texture = file_contents[i + 2].split("|") - for l,p,t in zip(layer,pos,texture): + for l, p, t in zip(layer, pos, texture): if p == "": break - x,y = p.split(',') - self.blocks.append(Block((float(x),float(y)),self.collision_layer[l],t)) + x, y = p.split(',') + x = float(x) + y = float(y) + if t == "PLAYER": + out[1] = (x, y) + elif t == "ENEMY": + out[0].append((x, y)) + else: + self.blocks.append(Block((x, y), self.collision_layer[l], t)) + return out def update(self, delta): for block in self.blocks: diff --git a/main.py b/main.py index 541ec5c..e3ccf8b 100644 --- a/main.py +++ b/main.py @@ -32,7 +32,7 @@ while is_running: case 0: scene = Menu() case 1: - scene = Game() + scene = Game(1) old_level = level scene.update(delta)