2016-12-12 8 views
1

pygameモジュールを使用して、画面に黒い四角形を描きました。私はその上にマウスを置くと、その周囲に別の(緑色の)矩形(幅= 4)を描くことによって四角形を「強調表示」するコードを書いています。 マウスがの場合は、を動かすだけで動作します。黒い四角形の表面に固定されている場合、緑色の四角形は表示されません。 私のコードは次のとおりです。Python 3.5.2:Pygame hightlight rectangle(マウスの場合)

import random, pygame, sys 
from pygame.locals import * 

pygame.init() 
done = False 
clock = pygame.time.Clock() 
white = (255,255,255) # COLLORS 
black = (0,0,0) 
red = (255,0,0) 
green = (0,100,0) 
display_width = 800 # SCREEN DIMMENSION 
display_height = 600 
game_display = pygame.display.set_mode((display_width,display_height)) # SCREEN 

def draw_rect(x,y): 
    rect = pygame.Rect(x, y, 40, 40) 
    pygame.draw.rect(game_display, black, rect) 
    if rect.collidepoint(mousex,mousey): 
      box_hightlight(x,y) 
def box_hightlight(x,y): 
    pygame.draw.rect(game_display,green,(x-5,y-5,50,50),4) 

while done != True: 

    x = (display_width - 40)/2 
    y = (display_height - 40)/2 

    mousex = 0 # used to store x coordinate of mouse event 
    mousey = 0 # used to store y coordinate of mouse event 

    for event in pygame.event.get(): # PRESSED KEYS EFFECTS 
     if event.type == pygame.QUIT: 
      done = True 
     elif event.type == MOUSEMOTION : 
      mousex, mousey = event.pos 
     elif event.type == MOUSEBUTTONUP: 
      mousex, mousey = event.pos 
      mouseClicked = True 

    game_display.fill(white) 
    draw_rect(x,y) 
    pygame.display.update() 
    clock.tick(60) 

私は何を欠席しましたか?

答えて

1

には、mousex, mouseyの位置がrectであるかどうかを確認します。

しかし、あなたのメインループでは、あなたは0, 0mousex, mouseyを設定し、MOUSEMOTION(またはMOUSEBUTTONUP)イベントが発生した場合にのみ、マウスの位置に設定します。

これはあなたのについて説明していますが、マウスが動いている場合にのみ質問があります。

イベントを使用せず、単にマウスの位置を取得するためにpygame.mouse.get_posを使用しないでください。

+0

ありがとうございます!出来た !また、mousex = 0のmousey = 0を削除しただけでもうまくいきました。 – ROBlackSnail

関連する問題