diff --git a/main.py b/main.py index 461eddf..b4e1b05 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ import pygame import time import sys +import random from world.world import World, Position from world.render_objects import DebugRenderObject @@ -17,6 +18,7 @@ DARK_GRAY = (64, 64, 64) GRAY = (128, 128, 128) WHITE = (255, 255, 255) RENDER_BUFFER = 50 +SPEED = 700 # Pixels per second # Grid settings GRID_WIDTH = 20 # Number of cells horizontally @@ -228,6 +230,14 @@ def main(): print("Tick logic executed") world.tick_all() + # gets every object in the world and returns amount of FoodObjects + objects = world.get_objects() + food = len([obj for obj in objects if isinstance(obj, FoodObject)]) + print(f"Food count: {food}") + if food < 10: + for i in range(10 - food): + world.add_object(FoodObject(Position(random.randint(-200, 200), random.randint(-200, 200)))) + # Calculate TPS every second if current_time - last_tps_time >= 1.0: actual_tps = tick_counter diff --git a/world/render_objects.py b/world/render_objects.py index 06f500d..455a21a 100644 --- a/world/render_objects.py +++ b/world/render_objects.py @@ -1,6 +1,12 @@ from world.world import Position, BaseEntity import pygame +# returns desired yellow value for food decay +def food_decay_yellow(decay): + if decay < 128: + return decay + else: + return 255 - decay class DebugRenderObject(BaseEntity): def __init__(self, position: Position, radius=5): @@ -33,3 +39,17 @@ class DebugRenderObject(BaseEntity): def __repr__(self): return f"DebugRenderObject({self.position}, neighbors={self.neighbors})" +class FoodObject: + def __init__(self, position: Position): + self.decay = 0 + self.position = position + + def tick(self): + self.decay += 1 + + if self.decay > 255: + self.decay = 0 # eventually will raise a destroy flag + + def render(self, camera, screen): + if camera.is_in_view(*self.position.get_position()): + pygame.draw.circle(screen, (255-self.decay,food_decay_yellow(self.decay),0), camera.world_to_screen(*self.position.get_position()), 5 * camera.zoom) diff --git a/world/world.py b/world/world.py index 5297448..e330709 100644 --- a/world/world.py +++ b/world/world.py @@ -125,6 +125,9 @@ class BaseEntity(ABC): self.flags["death"] = True + def get_objects(self): + return self.objects + class Position: def __init__(self, x, y): self.x = x