This commit is contained in:
= 2021-03-28 18:42:04 +02:00
parent e1107d8111
commit 534e9813ef
4 changed files with 58 additions and 27 deletions

View File

@ -9,19 +9,13 @@ from survival.components.movement_component import MovementComponent
from survival.components.position_component import PositionComponent
from survival.components.sprite_component import SpriteComponent
from survival.game_map import GameMap
from survival.resource_generator import ResourceGenerator
from survival.systems.camera_system import CameraSystem
from survival.systems.collision_system import CollisionSystem
from survival.systems.draw_system import DrawSystem
from survival.systems.input_system import InputSystem
from survival.systems.movement_system import MovementSystem
def draw_game(delta):
win.fill((0, 0, 0))
game_map.draw(camera)
world.process(delta)
pygame.display.update()
from survival.world_generator import WorldGenerator
if __name__ == '__main__':
pygame.init()
@ -34,12 +28,7 @@ if __name__ == '__main__':
game_map = GameMap(int(SCREEN_WIDTH / 32) * 2, 2 * int(SCREEN_HEIGHT / 32) + 1)
camera = Camera(game_map.width * 32, game_map.height * 32, win)
world = esper.World()
world.add_processor(InputSystem())
world.add_processor(CameraSystem(camera))
world.add_processor(MovementSystem(), priority=1)
world.add_processor(CollisionSystem(game_map), priority=2)
world.add_processor(DrawSystem(win, camera))
world = WorldGenerator().create_world(camera, game_map)
player = world.create_entity()
pos = PositionComponent([0, 0], [0, 0])
@ -53,16 +42,7 @@ if __name__ == '__main__':
sprite.set_scale(1)
world.add_component(player, sprite)
apple = world.create_entity()
pos = PositionComponent([96, 96], [3, 3])
world.add_component(apple, pos)
world.add_component(apple, SpriteComponent('apple.png'))
game_map.add_entity(apple, pos)
apple = world.create_entity()
pos = PositionComponent([128, 128], [4, 4])
world.add_component(apple, pos)
world.add_component(apple, SpriteComponent('apple.png'))
game_map.add_entity(apple, pos)
ResourceGenerator(world, game_map).generate_resources()
run = True
@ -78,4 +58,7 @@ if __name__ == '__main__':
keys = pygame.key.get_pressed()
draw_game(ms)
win.fill((0, 0, 0))
game_map.draw(camera)
world.process(ms)
pygame.display.update()

View File

@ -0,0 +1,30 @@
import random
from survival.components.position_component import PositionComponent
from survival.components.sprite_component import SpriteComponent
class ResourceGenerator:
def __init__(self, world, game_map):
self.world = world
self.map = game_map
def generate_resources(self):
for x in range(50):
obj = self.world.create_entity()
sprites = ['apple.png', 'water.png', 'wood.png', 'stone.png']
empty_grid_pos = self.get_empty_grid_position()
empty_pos = [empty_grid_pos[0] * 32, empty_grid_pos[1] * 32]
pos = PositionComponent(empty_pos, empty_grid_pos)
sprite = SpriteComponent(random.choice(sprites))
self.world.add_component(obj, pos)
self.world.add_component(obj, sprite)
self.map.add_entity(obj, pos)
def get_empty_grid_position(self):
free_pos = [random.randrange(self.map.width), random.randrange(self.map.height)]
while self.map.is_colliding(free_pos):
free_pos = [random.randrange(self.map.width), random.randrange(self.map.height)]
return free_pos

View File

@ -4,8 +4,7 @@ from survival.components.sprite_component import SpriteComponent
class DrawSystem(esper.Processor):
def __init__(self, window, camera):
self.window = window
def __init__(self, camera):
self.camera = camera
def process(self, dt):

View File

@ -0,0 +1,19 @@
from survival import esper
from survival.systems.camera_system import CameraSystem
from survival.systems.collision_system import CollisionSystem
from survival.systems.draw_system import DrawSystem
from survival.systems.input_system import InputSystem
from survival.systems.movement_system import MovementSystem
class WorldGenerator:
def create_world(self, camera, game_map):
world = esper.World()
world.add_processor(InputSystem())
world.add_processor(CameraSystem(camera))
world.add_processor(MovementSystem(), priority=1)
world.add_processor(CollisionSystem(game_map), priority=2)
world.add_processor(DrawSystem(camera))
return world