2

たとえば、X軸のみを検出するにはどうすればよいですか?

maus_x = 0
maus_y = 0
pygame.mouse.get_pos(maus_x, maus_y)

while not done:

    for event in pygame.event.get():

    if event.type == pygame.MOUSEMOTION:         
        if maus_x < wx_coord:
            angle += 10

理論的には、この "pygame.mouse.get_pos" はタプル (x, y) を返します。しかし、このタプルの x と y を表す変数を定義しています。というのは、マウスを動かすと(pygame.MOUSEMOTION)、「maus_x < wx_coord:」に書いてあることをすると、Y軸でも関数を実行してしまうのです。そして、それはまったく意味がありません。

「角度 +=10」は、マウスを x 軸で動かしたときにのみ実行する必要があります。誰が何が起こっているのか知っていますか?:)

4

1 に答える 1

3

それは関数呼び出しの仕組みではありません。あなたのコードでは、maus_xは常に0です。これは、何も変更されないためです。あなたがしたい:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            mousex, mousey = pygame.mouse.get_pos()   
            if mousex < wx_coord:
                angle += 10

実際、イベントオブジェクトを直接調べたいだけかもしれません。

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            mousex, mousey = event.pos   
            if mousex < wx_coord:
                angle += 10

またはさらに良い:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEMOTION:      
            relx, rely = event.rel   
            if relx != 0:  # x movement
                angle += 10
于 2012-11-18T18:06:46.740 に答える