Compare commits
5 Commits
737d595d50
...
a1b39f2484
| Author | SHA1 | Date | |
|---|---|---|---|
| a1b39f2484 | |||
| 049525ca59 | |||
| bb521371fa | |||
| 4e05a62274 | |||
| ae88bf0dd2 |
9
main.py
9
main.py
@ -26,7 +26,7 @@ GRID_HEIGHT = 15 # Number of cells vertically
|
||||
CELL_SIZE = 20 # Size of each cell in pixels
|
||||
|
||||
DEFAULT_TPS = 20 # Number of ticks per second for the simulation
|
||||
FOOD_SPAWNING = True
|
||||
FOOD_SPAWNING = False
|
||||
|
||||
|
||||
def draw_grid(screen, camera, showing_grid=True):
|
||||
@ -150,6 +150,9 @@ def main():
|
||||
# sets seed to 67 >_<
|
||||
random.seed(67)
|
||||
|
||||
if FOOD_SPAWNING:
|
||||
world.add_object(FoodObject(Position(x=random.randint(-100, 100), y=random.randint(-100, 100))))
|
||||
|
||||
running = True
|
||||
while running:
|
||||
deltatime = clock.get_time() / 1000.0 # Convert milliseconds to seconds
|
||||
@ -242,8 +245,8 @@ def main():
|
||||
objects = world.get_objects()
|
||||
food = len([obj for obj in objects if isinstance(obj, FoodObject)])
|
||||
|
||||
if food < 10 and FOOD_SPAWNING == True:
|
||||
world.add_object(FoodObject(Position(x=random.randint(-100, 100), y=random.randint(-100, 100))))
|
||||
# if food < 10 and FOOD_SPAWNING == True:
|
||||
# world.add_object(FoodObject(Position(x=random.randint(-100, 100), y=random.randint(-100, 100))))
|
||||
|
||||
# ensure selected objects are still valid or have not changed position, if so, reselect them
|
||||
selected_objects = [
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import random
|
||||
import random, math
|
||||
from multiprocessing.reduction import duplicate
|
||||
|
||||
from world.world import Position, BaseEntity
|
||||
import pygame
|
||||
@ -75,6 +76,12 @@ def food_decay_yellow(decay: int) -> int:
|
||||
else:
|
||||
return 255 - decay
|
||||
|
||||
def chance_to_grow(decay_rate):
|
||||
return ((2**(-20*(decay_rate-1)))*12.5)+0.1
|
||||
|
||||
def chance(percent):
|
||||
return random.random() < percent / 100
|
||||
|
||||
|
||||
class FoodObject(BaseEntity):
|
||||
"""
|
||||
@ -91,7 +98,7 @@ class FoodObject(BaseEntity):
|
||||
self.max_visual_width: int = 10
|
||||
self.decay: int = 0
|
||||
self.decay_rate: int = 1
|
||||
self.max_decay = 50
|
||||
self.max_decay = 200
|
||||
self.interaction_radius: int = 50
|
||||
self.neighbors: int = 0
|
||||
self.flags: dict[str, bool] = {
|
||||
@ -120,6 +127,18 @@ class FoodObject(BaseEntity):
|
||||
self.decay = self.max_decay
|
||||
self.flag_for_death()
|
||||
|
||||
grow_chance = chance_to_grow(self.decay_rate * (1 + (self.neighbors / 10)))
|
||||
|
||||
# print(grow_chance)
|
||||
|
||||
if chance(grow_chance):
|
||||
# print("Growing")
|
||||
duplicate_x, duplicate_y = self.position.get_position()
|
||||
duplicate_x += random.randint(-self.interaction_radius, self.interaction_radius)
|
||||
duplicate_y += random.randint(-self.interaction_radius, self.interaction_radius)
|
||||
|
||||
return [self, FoodObject(Position(x=duplicate_x, y=duplicate_y))]
|
||||
|
||||
return self
|
||||
|
||||
def normalize_decay_to_color(self) -> int:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user