2013-07-10 1 views
2

저는 그래픽 표현을 위해 파이썬과 파이 게임을 사용하여 포식자 - 먹이 시뮬레이션을 작성하고 있습니다. 나는 당신이 실제로 생물과 상호 작용할 수 있도록 그것을 만들고 있습니다. (그것을 죽이고, 그것을 선택하고 그것을 세계를 따라 다니는 등). 현재, 크리쳐를 클릭하면 두꺼운 원형 (gfxdraw 클래스의 다양한 앤티 앨리어싱 된 서클로 이루어짐)이 그것을 둘러싸고있어 성공적으로 선택했습니다.파이 게임에서 그려지는 표면 투명도?

내 목표는 그 원을 투명하게 만드는 것이지만 문서에 따르면 그려진 서페이스에 대한 알파 값을 설정할 수 없습니다. 필자는 반원을위한 솔루션을 보았습니다. (반투명 한 별도의 서페이스를 만들고 블리 팅 한 다음 직사각형을 그려서) 반투명 한 서클이 아닙니다.

무엇을 제안합니까? 감사의 :

+0

, [Surface.set_alpha] (HTTP : // WWW .pygame.org/docs/ref/surface.html # pygame.Surface.set_alpha). 그런 다음 그 표면을 화면에 표시하십시오. – ninMonkey

답변

6

가지고 다음 예제 코드를 살펴 : 당신이 표면을 만드는 경우에 원을 그리

import pygame 

pygame.init() 
screen = pygame.display.set_mode((300, 300)) 
ck = (127, 33, 33) 
size = 25 
while True: 
    if pygame.event.get(pygame.MOUSEBUTTONDOWN): 
    s = pygame.Surface((50, 50)) 

    # first, "erase" the surface by filling it with a color and 
    # setting this color as colorkey, so the surface is empty 
    s.fill(ck) 
    s.set_colorkey(ck) 

    pygame.draw.circle(s, (255, 0, 0), (size, size), size, 2) 

    # after drawing the circle, we can set the 
    # alpha value (transparency) of the surface 
    s.set_alpha(75) 

    x, y = pygame.mouse.get_pos() 
    screen.blit(s, (x-size, y-size)) 

    pygame.event.poll() 
    pygame.display.flip() 

enter image description here

+0

감사합니다! colorkey가 작업을 수행했습니다 (코드는 내가 원하는 것보다 조금 더 복잡해졌습니다). 한가지 : pygame.event.poll을 사용하는 특별한 이유가 있습니까? 건배 – Pabce

+2

네, 왜냐하면'pygame.MOUSEBUTTONDOWN'을 인수로 사용하여'pygame.event.get'을 호출하여 마우스 클릭 이벤트 만 검사하기 때문입니다. 이렇게하면'pygame.event.poll'을 호출해야합니다. 그렇지 않으면 이벤트 대기열이 채워지고 잠시 후 창이 응답하지 않게됩니다. 어떤 매개 변수도없이'pygame.event.get()'을 호출하는 경우 (보통 게임에서하는 일)이 작업을 수행 할 이유가 없습니다. – sloth

+2

질문 :'s' 생성 및 설정을 떠나야하는 특별한 이유 (이전에's = pygame.Surface (...'s.set_alpha (...')까지 줄은 메인 루프 내에서? 상수이기 때문에'x','y'와'blit' 만 거기에 있어야합니다. – MestreLion