В намерениях было, чтобы пушка следовала за курсором, но она его не видит
Код:
def game(): bombTime = 120
time = pg.time.Clock() FPS = 60
# Пушка
class Cannon: def __init__(self):
self.cannonImg = pg.image.load('images/cannon.png') self.cannonImg = pg.transform.scale(self.cannonImg, [self.cannonImg.get_width() // 2, self.cannonImg.get_height() // 2])
self.cannonRect = self.cannonImg.get_rect() self.cannonRect.x = WIDTH // 2 - self.cannonImg.get_width() // 2
self.cannonRect.y = HEIGHT - self.cannonImg.get_height() self.cannonSpeed = 0.1
self.dx = 0
def update(self): if mousePos[0] - self.cannonRect.x > 0:
self.dx = 1 elif mousePos[0] - self.cannonRect.x < 0:
self.dx = -1 self.cannonRect.x += self.dx * self.cannonSpeed
def draw(self):
screen.blit(self.cannonImg, [self.cannonRect.x, self.cannonRect.y])
cannon = Cannon()
# Бомба
class Bomb:
def __init__(self):
bombs.append(self) self.bombImg = pg.image.load('images/bomb.png')
self.bombImg = pg.transform.scale(self.bombImg, [self.bombImg.get_width() // 2, self.bombImg.get_height() // 2]) self.bombRect = self.bombImg.get_rect()
self.bombRect.x = random.randint(0, WIDTH - self.bombImg.get_width()) self.bombRect.y = 0 - self.bombImg.get_height()
self.bombSpeed = 3.5
def update(self): self.bombRect.y += self.bombSpeed
def draw(self):
screen.blit(self.bombImg, [self.bombRect.x, self.bombRect.y])
bombs = []
while True: screen.fill([255, 255, 255])
mousePos = pg.mouse.get_pos()
if bombTime == 120: Bomb()
bombTime -= 1 elif bombTime == 0:
bombTime = 120 else:
bombTime -= 1
for bomb in bombs: bomb.update()
bomb.draw()
cannon.update() cannon.draw()
time.tick(FPS)
pg.display.update()
game()
В функцию код взял для смены сцен, есть ли более правильные способы это сделать?