2017-03-06 4 views
0

一度四角形をクリックすると、「あなたは胸を開けました!」という文章が印刷されます。何回も調整したり追加したりすることができます。私はこの文を繰り返すことを止めたいと思っています

import pygame 

pygame.init() 
pygame.display.set_caption('Crash!') 
window = pygame.display.set_mode((300, 300)) 
running = True 

#Draw Once 
Rectplace = pygame.draw.rect(window, (255, 0, 0),(100, 100, 100, 100)) 
pygame.display.update() 
#Main Loop 
while running: 
#mouse position and button clicking 
    pos = pygame.mouse.get_pos() 
    (pressed1,pressed2,pressed3) = pygame.mouse.get_pressed() 
#if statement 
    if Rectplace.collidepoint(pos) and pressed1 == 1: 
     print("You have opened a chest!") 

#Quit pygame 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      running = False 

pygame.quit() 

調整コードも教えてください。それは高く評価されるでしょう。前もって感謝します!

+0

、右の印刷行の後に、0にpressed1の値を変更してみてください。代わりにそれを確認してみてください。 – domsson

+0

私はある種のラッチを提案します。あなたは胸の配列を持っていて、各胸にはその座標と内容だけでなく、開いているかどうかもわかります。 Rectplace.collidepoint(pos)とpressed1 == 1、chest.opened == Falseの場合: – Gauthier

+0

ループで 'pygame.mouse.get_pressed()'を使用していることに気付きました。これは、マウスのボタンを押さえている限り、あなたの 'if'と' print() 'が何度も何度もトリガされることを意味します。より良いアプローチは、ある種の 'button_released'イベントが存在するかどうかをチェックすることです。そうでない場合は、自分で行うことができます。マウスボタンが押された場合はブール値を設定します。もう押さないと、ボタンが離されたことがわかります。 – domsson

答えて

0

私はpygameのを知らないが、通常は `pressed`イベントに加えて` released`イベントがある pressed1 = 0

+0

ありがとうございますが、それは動作しなかったか、何かを台無しにしました。しかし、私はそれを正しくタイプしたと思う。 –

関連する問題