2017-07-09 14 views
0

pygameでプログラムを作成しようとしていますが、特定の領域でマウスを押すと何かが表示されます。私はmouse.get_posとmouse.get_pressedを使ってみましたが、正しく使用しているかどうかはわかりません。ここに私のコードは、私は、マウスのプレスをチェックするためにMOUSEBUTTONDOWNを使用し、私のゲームで特定の領域でマウスがクリックされているかどうかを確認する(pygame)

while True: 
    DISPLAYSURF.fill(BLACK) 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 
      mpos = pygame.mouse.get_pos() 
      mpress = pygame.mouse.get_pressed() 
      if mpos[0] >= 400 and mpos[1] <= 600 and mpress == True: 
       print "Switching Tab" 
+0

このコードを実行するとどうなりますか?おそらく、mpos [0]とmpos [1]とmpressをスクリーンやコンソールに出力するデバッグコードを実装して、何が起きているのかを確認する必要があります。 – JeffUK

答えて

0

です:

while True: 
    DISPLAYSURF.fill(BLACK) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     (x, y)= pygame.mouse.get_pos() 
     if x >= 400 and y <= 600 and event.type == pygame.MOUSEBUTTONDOWN: 
      print "Switching Tab" 
1

マウスボタンがイベントループと使用中の押されたかどうかを確認、エリアを定義するためにpygame.Rectを使用して、それがevent.pos(あるいはpygame.mouse.get_pos())と衝突するかどうかを確認するためのareacollidepointメソッド。

import sys 
import pygame as pg 


def main(): 
    screen = pg.display.set_mode((640, 480)) 
    clock = pg.time.Clock() 
    # A pygame.Rect to define the area. 
    area = pg.Rect(100, 150, 200, 124) 

    done = False 

    while not done: 
     for event in pg.event.get(): 
      if event.type == pg.QUIT: 
       done = True 
      if event.type == pg.MOUSEBUTTONDOWN: 
       if event.button == 1: # Left mouse button. 
        # Check if the rect collides with the mouse pos. 
        if area.collidepoint(event.pos): 
         print('Area clicked.') 

     screen.fill((30, 30, 30)) 
     pg.draw.rect(screen, (100, 200, 70), area) 

     pg.display.flip() 
     clock.tick(30) 


if __name__ == '__main__': 
    pg.init() 
    main() 
    pg.quit() 
    sys.exit() 
関連する問題