Игра на C# WinForms: Подсчет очков и фикс телепортации

Продолжим разработку простой игры на 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. Предлагаем читателям экспериментировать и улучшать игру, добавляя новые возможности.

Что будем искать? Например,программа