Задать вопрос
@Telax4As

Как устранить ошибку с курсором в pygame?

В намерениях было, чтобы пушка следовала за курсором, но она его не видит
Код:
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()

В функцию код взял для смены сцен, есть ли более правильные способы это сделать?
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Простой 14 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы