0

ゲームのホーム画面で作業していて、ボタンとして機能する画像があります。したがって、画像のどこかをクリックすると、画像が変化し、ゲームの次の部分がインポートされます。しかし、私がやりたいことは、マウスが画像の上に置かれたときに音を鳴らすことです。しかし、マウスがボタン画像の上に置かれていることを検出するにはどうすればよいでしょうか?

ホーム画面のコードのコピーを次に示します。ps。ここで私のコードを見ることができるようになりました。

import pygame, sys, random
import time

B_images = ["startbutton.png", "startbuttonpush.png"]

class BClass(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("startbutton.png")
        self.rect = self.image.get_rect()
        self.rect.center = [310, 500]




def animate():
    screen.fill([0,0,0])
    screen.blit(B.image,B.rect)
    pygame.display.flip()



pygame.init()
x = y = 0
pos = pygame.mouse.get_pos()
pygame.display.set_caption("Skier")
screen = pygame.display.set_mode([640,640])
B = BClass()
font = pygame.font.Font(None, 50)
ButtonSound = pygame.mixer.Sound('ButtonSound.ogg')

while True:
    animate()
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                import End.py
        if event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            if ( x in range(229,391)) and (y in range(470,530)):
                B.image = pygame.image.load("startbuttonpush.png")
                animate()
                time.sleep(0.1)
                import skier.py
4

2 に答える 2

2

マウス ホバーを検出するには、マウス クリックの検出と同じことを行いますが、pygame.MOUSEMOTIONイベントで行う必要があります。これは、マウスの動きが検出されるたびに呼び出されます。

    if event.type == pygame.MOUSEMOTION:
        x, y = event.pos
        if ( x in range(229,391)) and (y in range(470,530)):
            print "Hovering over image!"

またx in range(229, 391)、非常に非効率的であり、229 <= x <= 391代わりに行う必要があることに注意してください。最終的には、これらの座標をハードコードするべきではありません。

于 2013-10-16T17:06:43.897 に答える