Продолжим разработку простой игры на C# с использованием WinForms, начатой в первой части. Цель – добавить подсчет очков при попадании в движущийся круг.
Исправление ошибки телепортации круга
На предыдущем этапе круг телепортировался в центр при выходе за границы экрана. Это исправляется изменением направления движения круга при столкновении со стенами. Если круг выходит за границу по оси X, направление движения по X умножается на -1. Аналогично для оси Y. Круг отскакивает от границ.
Изменение цвета круга и замена текстур
Для улучшения визуального восприятия рекомендуется изменить цвет круга, чтобы он не сливался с фоном. Можно заменить стандартные изображения на собственные текстуры. В примере используются текстуры «круг» и «преграда».
Добавление подсчета очков
Для реализации подсчета очков используется элемент Label, размещаемый на форме. Этот элемент будет отображать текущее количество очков. Создается поле для хранения очков, инициализированное нулем, и метод AddScore, который увеличивает это значение и обновляет текст метки. Метка переименована в scoreLabel для ясности.
private int score = 0;
private Label scoreLabel;
public void AddScore(int points)
{
score += points;
scoreLabel.Text = score.ToString();
}
Расчет расстояния и проверка попадания
Для определения попадания в круг используется теорема Пифагора для вычисления расстояния между центром круга и положением курсора мыши. Расстояние вычисляется следующим образом:
Point between = new Point(localPos.X - targetPos.X, localPos.Y - targetPos.Y);
double distance = Math.Sqrt(between.X * between.X + between.Y * between.Y);
Здесь localPos – позиция круга, targetPos – позиция курсора. Если расстояние меньше 20 пикселей, начисляется одно очко. Используется библиотека Math для вычисления квадратного корня.
Улучшение игры
Предлагаются идеи для дальнейшего улучшения игры: добавить ускорение круга, изменить систему начисления очков в зависимости от близости к центру и т.д.
В результате получилась простая, но функциональная игра с подсчетом очков. Это демонстрирует основные принципы разработки игр на C# с использованием WinForms. Предлагаем читателям экспериментировать и улучшать игру, добавляя новые возможности.