2014-04-26 2 views
1

파이 게임에서 간단한 서랍 프로그램을 프로그래밍하고 있습니다. MOUSEMOTION 이벤트를 기반으로 사용자 정의 크기에 사용자 정의 모양을 그리려는 시도에 매달 렸습니다. 나는 시도했다 :파이 게임에서 사용자 정의 모양을 그리는 방법

pygame.draw.rect(screeny, (255,255,255), [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1) 
square = pygame.draw.rect(screeny, color, [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1) 

pygame.display.flip() 

그러나 그것은 작동하지 않았다. 또한 목록을 추가하고 목록의 첫 번째 항목을 덮어 쓰고 이벤트가있을 때마다 추가했지만 작동하지 않습니다.
질문 반복 : 이벤트를 기반으로 파이 게임에서 크기를 재조정 할 수있는 사각형을 만들려면 어떻게해야합니까?
도움이 필요하십니까? 감사!

+0

다각형. http://www.pygame.org/docs/ref/draw.html 다각형 섹션을 확인하십시오. – KodyVanRy

+0

하지만 나는 거대한 반향을 원하지 않습니다. ** 이벤트를 기반으로 크기를 조정할 수있는 모양 (rect)이 필요합니다. 나는 물건을 그리는 법을 안다. – user3576467

답변

2

예제로 작업하기에 충분한 코드가 없습니다. 그러나 상자를 만들고 화면에 남겨 두는 코드를 약간 만들 수있었습니다.

import pygame, sys 
from pygame.locals import * //Allows MOUSEMOTION in stead of pygame.MOUSEMOTION 

window_size = (800, 600) 
clock = pygame.time.Clock() 
FPS = 60 
mousepos = None 
boxes = [] 

screen = pygame.display.set_mode(window_size) 

BLACK = (0, 0, 0) 
WHITE = (255, 255, 255) 

while 1: 

    screen.fill(WHITE) 

    events = pygame.event.get() 

    for event in events: 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 

     if event.type == MOUSEBUTTONDOWN: 
      mousepos = [event.pos[0], event.pos[1], 0, 0] 

     if event.type == MOUSEBUTTONUP: 
      boxes.append(mousepos) 
      mousepos = None 

     if event.type == MOUSEMOTION and mousepos != None: 
      mousepos = [mousepos[0], mousepos[1], event.pos[0] - mousepos[0], event.pos[1] - mousepos[1]] 

    for box in boxes: 
     pygame.draw.rect(screen, BLACK, box, 1) 

    if mousepos != None: 
     pygame.draw.rect(screen, BLACK, mousepos, 1) 

    pygame.display.update() 
    clock.tick(FPS) 

나는이 도움이되기를 바랍니다.

참고 : 이벤트 대기열에주의하십시오. 위험합니다. 절대로 키 누름을 확인하는 데 사용하지 마십시오. "pygame.key.get_pressed() [K_ (여기 키)]"를 사용하십시오. 이것을 두 번 트리거하지 못하게하려면 다음과 같이 이전 값을 보유하는 목록을 만듭니다.

prev = pygame.key.get_pressed() 

if prev[K_(key here)] != pygame.key.get_pressed()[K_(Key here)] 
    do your stuff... 
관련 문제