Skip to content

Визуализация

VBrazhnik edited this page Jan 3, 2019 · 1 revision

Визуализация является бонусной частью проекта «Corewar», поэтому вариантов её реализации существует великое множество.

В данном разделе будет разобран подход к визуализации, который был предоставлен нам в качестве примера.

Визуализатор

Он основывается на наличии у каждого из игроков, которые участвуют в сражении, своего цвета.

Этим цветом будет закрашен исполняемый код чемпиона при инициализации арены, а также те участки памяти, которые будут записаны принадлежащими ему каретками с помощью операций st и sti.

В список принадлежащих игроку входит каретка, которая размещается на начале его исходного кода перед сражением, а также все каретки, которые она затем породит с помощью операций fork и lfork.

Участки памяти, которые не раскрашены в цвета одного из игроков будут иметь цвет по умолчанию — серый.

Каретка

Также особым образом на арене выделяются каретки. Ячейка, на которой каретка находится в данный момент, подсвечивается следующим образом: фон — цвет, в который окрашен код в ячейке; содержимое — черный цвет.

Важно, что на фоне отображается цвет кода самой ячейки, а не каретки. То есть каретка порожденная «зеленым» игроком попав на синее поле будет светиться синим цветом.

Обновленные участки

Также особым образом выделяются участи памяти, которые были записаны операциями st и sti. Содержимое данных ячеек будет выделено жирным следующие 50 циклов.

Операция live

Кроме обновленных участков памяти выделяется ещё и выполнение операции live.

Следующие 50 циклов ячейка, которая содержит код данной операции будет выделена следующим способом: фон — цвет от каретки, которая выполнила данную операцию; содержимое ячейки будет окрашено в белый цвет и выделено жирным.

Кстати, отображение выполненной операции live имеет больший приоритет, чем отображение каретки. Поэтому при наложении этих двух сущностей каретку видно не будет.