2016-07-22 7 views
2

Pygameで私はバックグラウンドを持つゲームを持っています(画像の名前は 'bg)とその画像(名前:' dice ') 私はプレーヤーが画像をクリックしているときに気付いたが、サイコロの矩形は0,0(x = 0およびy = 0)であり、画像は740,40で示されている。pygameは私の画像の正しい矩形を認識しません

どうすればよいですか?

bg = pygame.image.load("temptry.gif") 
dice=pygame.image.load("dicee.gif") 
screen.blit(bg, (0, 0)) 
bg.blit(dice,(740,40)) 
pygame.display.update() 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      sys.exit() 
     if event.type == pygame.MOUSEBUTTONDOWN: 
      # Set the x, y postions of the mouse click 
      x, y = event.pos 
      print dice.get_rect() 
      if dice.get_rect().collidepoint(x, y): 
       print "omg" 
    screen.blit(bg, (0, 0)) 
    bg.blit(dice,(740,40)) 
    pygame.display.update() 
+0

デフォルトでは、 'dice.get_rect()'はpygame.Rectを(0、0)にします。代わりに 'dice.get_rect(left = 740、top = 40).collidepoint(x、y)'を使ってみてください。 –

+1

ええ、ありがとう、あまりにも!!!!!それでおしまい! – roni280

答えて

1

コードに複数の問題があります。メインループの前にpygame.display.update()は必要ありません。次に、画像を.convert()する必要があります。たとえば、dice = pygame.image.load( "dicee.gif")。convert()。また、GIFSの読み込みに問題がある可能性があります。

非常に複雑な方法で作業しているようです。 私はあなたのメインループの背後にロードされたすべての画像を持っていることをお勧めします。メインループの後にイメージをblitします。代わりにbg.blit(dice,(740,40))のやり方を教えてください。screen.blit(bg,(740,40))

次に、メインループの後にマウスの位置を変える必要があります。

それはあなたのサイコロ画像のrectsを作成する必要があります。この

mouse_pos = pygame.mouse.get_pos() 

次のようになります。それは

dice_rect = dice.get_rect()

はその後、誰かがサイコロの画像をクリックすると

if pygame.mouse.get_pressed()[0] and dice_rect.collidepoint(mouse_pos): 
     print "omg" 

は、その後、私はpygame.display.update()

を願って行うテストというif文を作るための変数を設定します。これは以下のコメントについてさらにご質問がある場合に役立ちました。

+0

私は両方の写真をスクリーン(screen.blit)の下に置くことができません。それはそのようには機能しません。その質問からアドバイスを受けました:http://stackoverflow.com/questions/19336585/how-to-blitイメージ内のpython-in-the-specific-a-specific-image?rq = 1 – roni280

+0

また、写真のロードに問題はありません。画面が表示されますが、パイゲームは彼らが正しい場所であると認識していません – roni280

+0

Imはあなたがイメージをきれいにすることができると推測しています。人が画像をクリックしたかどうかを調べる衝突点の引数を使うだけです。 – abc1234

関連する問題