Мне нужно запрограммировать игру в pygame, похожую на понг, но с 1 игроком. Хотя есть одна ракетка и один мяч, я должен создать класс для ракетки и мяча. Я создал класс весла, нарисовал его, но у меня проблема с реализацией операторов if
для движения. Вот что я пробовал:
class Paddle():
def __init__(self,x,y,width,height,color):
self.x = x
self.y = y
self.width = width
self.height = height
self.color = color
def Draw(self, screen,):
pygame.draw.rect(window, self.color, [self.x,self.y,self.width,self.height])
def Keys(self, y, height):
keys = pygame.key.get_pressed()
if keys [pygame.K_UP]:
self.y -= 1
if keys [pygame.K_DOWN]:
self.y += 1
а затем я добавил отдельную функцию для объектов из классов:
def Objects():
paddle = Paddle(1150,250,20,100,black)
paddle.Draw(window)
paddle.Keys(250,100)
Я снова хочу добавить в класс движение клавиш (поскольку все весла должны иметь одинаковую функцию). Я также должен упомянуть, что я не получаю никаких ошибок, но это не работает.
Вы должны создать экземпляр Paddle
перед циклом приложения. Передайте объект функции Objects
:
def Objects(surf, paddle):
paddle.Draw(surf)
paddle.Keys(250,100)
my_paddle = Paddle(1150,250,20,100,black)
while True:
# [...]
Objects(window, my_paddle)
# [...]
Не создавайте каждый раз новый объект
Paddle
. Переместите первую строку функцииObjects()
за пределы этой функции, чтобы она вызывалась только один раз. (Я предполагаю, что вы вызываетеObjects()
из основного игрового цикла).