На этом уроке мы начнём делать новую игру - Вирус. Смысл игры подробно рассказан на видео. Цель урока - создать класс GameVirus и реализовать методы GameViurs(), AddGamer(), Step(), RunAll(). Также придумать и написать словами алгоритм методов SetNewVirus(Игрок) и FindNewVirus().
Дата отправки отчёта:
29 октября 2016 г.
Задание выполнено: за
1 час. 30 мин.
Чему научился:
Созданию своей игры
Что было сложным:
метод findNewLeader
Комментарии:
ениеКак и было предложено реализована игра, в которой лидерство меняется от красных к чёрным шарикам и наоборот по факту наличия оставшегося одного не заражённого шарика - он и становится новым шариком вирусом "вымирающего цвета". setLeader у меня нет , я всё делаю через сравнение цветов коснувшихся шариков в findLeader. Там идут двойной проход по списку игроков (чтобы взять каждого игрока и проверить не коснулся ли он другого) и потом сверяются их цвета. Если цвета разные - проверяется какая команда сейчас лидирует. Для этого в классе имеются две переменные типа bool rLead и bLead, имеющие всегда различные друг от друга значения. Можно было бы обойтись и одной, но так нагляднее и проще в написании кода. Собственно суть я вроде описал...
Научился: создавать новую игру по старому интерфейсу Трудности: описать правила игры Реализовал игру "Вирус". Последний добавленный в игру игрок становится вирусом. Соприкасаясь с другими, он их заражает. Как только заразили предпоследнего, последний незараженный становится новым вирусом, и игра начинается сначала.
Научился: Пока придумал такую реализацию необходимых методов:
SetNewVirus() - необходимо добавить игрока в список virused, и сделать его голей (покрасить).
FindNewVirus() - проверяем списки virused и gamers и если для них выполняется условие поймал() и если игрока нет в списке virused, то выполняем для пойманного игрока SetNewVirus().
private void SetNewVirus(Игрок gamer)
{
virused.Add(gamer);
gamer.Голя();
}
private void FindNewVirus()
{
foreach (Игрок g in gamers)
{
foreach (Игрок k in virused)
{
if (k.Поймал(g))
{
if (g.Equals(k))
return;
SetNewVirus(g);
}
}
}
} Трудности: Пока не до конца разобрался как реализовать концовку игры - когда задаётся новый вирус.