Перемещение спрайта при нажатии мыши в Python - PullRequest
1 голос
/ 21 августа 2011

Я делаю клон Понг в учебных целях, и мне нужно, чтобы мяч двигался с середины экрана (он посылается туда, когда он проходит мимо весла), когда нажата мышь.Я пробовал следующий код, но он ничего не делает, поэтому я, вероятно, не понимаю синтаксис.Постарайтесь сделать это максимально простым, пожалуйста, и объясните, я бы предпочел не иметь 50 строк кода для этого (я хочу понять все, что я здесь использую).Я думаю, что это весь соответствующий код, извините, если это не так.Спасибо.

def middle(self):
    """Restart the ball in the centre, waiting for mouse click. """
    # puts ball stationary in the middle of the screen
    self.x = games.screen.width/2
    self.y = games.screen.height/2
    self.dy = 0
    self.dx = 0

    # moves the ball if mouse is pressed
    if games.mouse.is_pressed(1):
        self.dx = -3

Ответы [ 2 ]

0 голосов
/ 10 октября 2015

Я смотрю на ту же проблему, что и новичок Python кодер - Games.py (редакция 1.7) включает несколько is_pressed методов в различных классах, включая клавиатуру и мышь.

class Mouse(object):

#other stuff then 
def is_pressed(self, button_number):
    return pygame.mouse.get_pressed()[button_number] == 1

, так как pygame - это скомпилированный модуль (у меня есть 1.9.1) со ссылкой на документацию, а не на исходный код, я нахожу здесь , что есть pygame.mouse.get_pressed () будет получать состояние кнопок мыши

get_pressed() -> (button1, button2, button3)

Так что я думаю, что проблема заключается в использовании этого в (y) нашем коде, а не в использовании неправильной функции .....

ОК, ПОЛУЧИЛ ЭТО РАБОТАТЬ - МОЙ ИСПРАВЛЕНИЕ:

class myClass(games.Sprite):
    def update(self):
        if games.mouse.is_pressed(0)==1:
            self.x=games.mouse.x
            self.y=games.mouse.y

вызов функции in () приводит к перемещению выбранного спрайта в местоположение мыши. НТН

0 голосов
/ 02 ноября 2011

Невозможно точно знать, что происходит на основе этого фрагмента кода, но похоже, что вы используете неправильную функцию, чтобы определить, нажата или нет кнопка мыши.

Screen.is_pressed из игрового модуляwraps pygame.key.get_pressed, который определяет только состояние клавиш клавиатуры, а не кнопок мыши.Вы, вероятно, хотите функцию Screen.mouse_buttons, которая обернет pygame.mouse.get_pressed.Вы можете использовать его в таком цикле (я буду притворяться, что у вас есть экземпляр games.Screen, называемый 'screen'):

left, middle, right = screen.mouse_buttons()
# value will be True if button is pressed
if left:
    self.dx = -3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...