JustCaptain kod-buduschego
278f89b670625c4e4b01e3ae728782f1780fa610
Перейти к файлу
Код
task_2.py
"""

Задача 2. Игровой спавн врагов
Предметная область
Вы делаете игру.
Враги появляются волнами.
Хранить миллионы врагов сразу бессмысленно.
Их нужно создавать в момент появления.

Условие
Создайте генератор:
spawn_enemies()

Он должен выдавать:
"Гоблин"
"Скелет"
"Орк"
"Дракон"

Пример:
for enemy in spawn_enemies():
    print(f"Появился враг: {enemy}")

Результат:
Появился враг: Гоблин
Появился враг: Скелет
Появился враг: Орк
Появился враг: Дракон

Что тренируется
- yield
- понимание игровых событий
- генерация объектов по требованию

Усложнение

Сделайте бесконечный спавн:

Гоблин
Гоблин
Гоблин
...

Подсказка:

while True:

"""

import random
from typing import Generator

enemies: list[str] = ["Гоблин", "Скелет", "Орк", "Дракон"]


def spawn_enemies(count: int, enemie: int | None = None) -> Generator:
    start: int = 0
    while start != count:
        if enemie is None:
            enem: str = enemies[random.randint(a=0, b=len(enemies))]
        else:
            enem: str = enemies[enemie]
        yield enem
        start += 1


spawn_generator: Generator = spawn_enemies(count=5)


print(next(spawn_generator))
# .... N  времени спустя
print(next(spawn_generator))

"""
DATABASE: list[int] = []


def update_global() -> Generator:
    global DATABASE
    count: int = 0
    while count != 50:
        DATABASE.append(count)
        yield None
        count += 1


for i in update_global():
    print(i)
print(DATABASE)

"""