-
Notifications
You must be signed in to change notification settings - Fork 4
Визуализация
Визуализация является бонусной частью проекта «Corewar», поэтому вариантов её реализации существует великое множество.
В данном разделе будет разобран подход к визуализации, который был предоставлен нам в качестве примера.
Он основывается на наличии у каждого из игроков, которые участвуют в сражении, своего цвета.
Этим цветом будет закрашен исполняемый код чемпиона при инициализации арены, а также те участки памяти, которые будут записаны принадлежащими ему каретками с помощью операций st
и sti
.
В список принадлежащих игроку входит каретка, которая размещается на начале его исходного кода перед сражением, а также все каретки, которые она затем породит с помощью операций fork
и lfork
.
Участки памяти, которые не раскрашены в цвета одного из игроков будут иметь цвет по умолчанию — серый.
Также особым образом на арене выделяются каретки. Ячейка, на которой каретка находится в данный момент, подсвечивается следующим образом: фон — цвет, в который окрашен код в ячейке; содержимое — черный цвет.
Важно, что на фоне отображается цвет кода самой ячейки, а не каретки. То есть каретка порожденная «зеленым» игроком попав на синее поле будет светиться синим цветом.
Также особым образом выделяются участи памяти, которые были записаны операциями st
и sti
. Содержимое данных ячеек будет выделено жирным следующие 50 циклов.
Кроме обновленных участков памяти выделяется ещё и выполнение операции live
.
Следующие 50 циклов ячейка, которая содержит код данной операции будет выделена следующим способом: фон — цвет от каретки, которая выполнила данную операцию; содержимое ячейки будет окрашено в белый цвет и выделено жирным.
Кстати, отображение выполненной операции live
имеет больший приоритет, чем отображение каретки. Поэтому при наложении этих двух сущностей каретку видно не будет.