Поскольку вам не нужен код, вот как это сделать в словах .
Напишите функцию с именем, скажем ballHits()
.
Перейдите кфункция paddlecoords
, мяч coords
и радиус шара 35
?as radius
Внутри этой новой функции paddlecoords
определяет прямоугольник.Код должен проверить, находится ли край шара внутри этого прямоугольника.
A Простой способ реализовать это состоит в том, чтобы определить координаты прямоугольника (квадрата), который быокружить мяч.Поскольку шарик нарисован от центра, это делает его примерно следующим:
[ coords.x - radius, coords.y - radius, 2 * radius, 2 * radius ]
# the [ x, y, width, height] of a square covering a circle
Используя класс rect
PyGame, определите, перекрываются ли ваши два прямоугольника.
A непросто способ реализовать это - предварительно сгенерировать список краевых пикселей для круга, образующего шар.Может быть, использовать что-то вроде Алгоритм окружности средней точки , центрированный на (0,0)
, чтобы дать вам список точек, которые вы можете откорректировать с помощью текущих координат шара.
Использование прямоугольника веслаи класс PyGame rect
определяет, сталкивается ли какая-либо из этих точек при смещении относительно текущего местоположения шара с веслом.Это даст вам истинное столкновение, а не приближение, и будет работать лучше для столкновений из угла в угол.Вероятно, было бы быстрее сначала проверить грубое столкновение с помощью метода квадрата, а затем проверить множество точек окружности.
Если код решит, что произошло столкновение, верните True
из функции и False
иначе.
В вашем основном коде вызовите эту функцию и воздействуйте на возвращенный результат.