generated from mwc/project_game
33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
from .fruit import Fruit, FRUIT_TYPES
|
|
from random import choice, randint
|
|
|
|
class FruitManager:
|
|
|
|
display = False
|
|
name = "fruit_manager"
|
|
|
|
def __init__(self):
|
|
self.active_fruits = []
|
|
self.last_spawn_turn = 0
|
|
self.next_z = 0
|
|
|
|
def play_turn(self, game):
|
|
self.active_fruits = [f for f in self.active_fruits if f.alive]
|
|
spawn_interval = max(12, 72 - game.turn_number // 10)
|
|
if game.turn_number - self.last_spawn_turn >= spawn_interval:
|
|
self.create_piece(game)
|
|
self.last_spawn_turn = game.turn_number
|
|
|
|
def create_piece(self, game):
|
|
width, _ = game.board_size
|
|
fruit_type = choice(FRUIT_TYPES)
|
|
shape = fruit_type['shape']
|
|
max_ox = max(ox for ox, oy in shape)
|
|
x = randint(0, width - 1 - max_ox)
|
|
dx = choice([-1, 0, 0, 1])
|
|
speed = randint(2, 5)
|
|
fruit = Fruit((x, 1), game, shape, fruit_type['color'], dx, speed, self.next_z)
|
|
self.next_z += len(shape)
|
|
game.add_agent(fruit)
|
|
self.active_fruits.append(fruit)
|