1

私は学習目的で Pong クローンを作成しており、マウスが押されたときにボールを画面の中央から移動させる必要があります (ボールがパドルを通過するとそこに送信されます)。次のコードを試してみましたが、何も実行されないため、構文が理解できない可能性があります。できるだけ単純にしてください。説明してください。これには 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
4

2 に答える 2

0

そのコードフラグメントに基づいて何が起こっているのかを正確に知ることは不可能ですが、マウスボタンが押されているかどうかを検出するために間違った関数を使用しているようです。

Screen.is_pressedゲームモジュールからのラップ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
于 2011-11-02T19:41:20.050 に答える
0

私は初心者の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)

したがって、問題は、間違った関数を使用するのではなく、コードでこれを使用することだと思います.....

OKこれで動作しました-私の修正:

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 Main() を呼び出すと、選択したスプライトがマウスの位置に移動します。HTH

于 2015-10-10T11:35:42.723 に答える