Skip to content

whatisslove11/game_life

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Игра "Жизнь"

Проект написан в качестве вступительного экзамена ML&DL, зимний отбор 2022 года

Задача - разработать симуляцию жизни океана по определенным правилам Океан представляется двумерным массивом, каждая клетка которого может содержать:

  • пустоту (представляется как цифра 0)
  • скалу (представляется как цифра 1)
  • рыбу (представляется как цифра 2)
  • креветку (представляется как цифра 3).

У каждой клетки есть ровно 8 соседей. Все клетки за пределами игрового океана считаются пустыми.Скалы не подвергаются изменениям в течение каждой генерации.

Рыбы и креветки существуют по следующим правилам:

  • если у рыбы/креветки 2 или 3 соседа, то она не изменяется (продолжает жить)
  • если у рыбы/креветки менее 2 соседей или более 4 соседей, то она погибает (значение клетки изменяется на 0 (пустота) )
  • рыбы и креветки живут отдельно друг от друга - креветки не влияют на рыб, рыбы не влияют на креветок

Пустая клетка подчиняется следующему закону:

  • если у нее ровно 3 соседа-рыб, то ее значение меняется на 2 (в клетке зарождается рыба)
  • если у нее ровно 3 соседа-креветок и нет 3 соседов-рыб, то ее значение меняется на 2 (в клетке зарождается рыба)

Файлы репозитория

game_life.ipynb

Содержит ноутбук с отображением жизни океана без анимации (отображение идет в качестве вывода двумерного массива, содержащего целочисленные значения от 0 до 3 включительно). Вывод выглядит следующим образом:

without_animate

В случае, если предыдущая итерация жизни океана равна последующей итерации (океан перестает изменяться), то выводится сообщение о "смерти" океана:

death_msg

game_life_animate.ipynb

Содержит ноутбук с более наглядным представлением жизни океана - вместо вывода океана в качестве двумерного массива с цифрами выводится визуализация.

Изначально выводится пример визуализации самого океана:

anim_ocean

Последством выполнения команды HTML(anim.to_html5_video()) будет выведено видео в формате .mp4 длительностью 25 секунд. Файл с примером визуализации лежит в папке img.

Алгоритм работы

Работа обоих файлов строится на 3 функциях - create, get_neigh и next_step. Рассмотрим каждую из функций:

create

Данной функции на вход подается число N - линейный размер океана, и кортеж чисел chance - шанс появления каждой из клеток (пустоты, скалы, рыбы и креветки) в океане. Функция возвращает ocean - двумерный массив, являющийся океаном

get_neigh

Данной функции на вход передается ocean - двумерный массив (изображение океана), N - линейный размер океана, x, y - координаты определнной клетки. Функция возваращет [fish_count, shrimp_count] - количество рыб и креветок по соседству с клеткой с коодинатами x и y

next_step

Данной функции на вод передается ocean - двумерный массив (изображение океана), prot_ocean - копия океана (создается по той причине, что все клетки океана меняются не последовательно, а одновременно), и N - линейный размер океана. Внутри вункции находится вложенный цикл, который "проходится" по всем клеткам океана и в зависимости от их "содержимого" (пустота, рыба и т.д.) вызывает функцию get_neigh и при необходимости меняет содержимое клетки.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published