pygame
필수 요소
수색…
그리기 및 기본 애니메이션
이 프로그램은 일부 모양과 ' 안녕하세요 세상을 그립니다 ! '이미지를 창 구석 구석에 보냅니다.
전체 코드 :
import pygame,sys
from pygame.locals import *
pygame.init()
FPS = 30 #frames per second setting
fpsClock = pygame.time.Clock()
#set up the window
screen = pygame.display.set_mode((500,400), 0, 32)
pygame.display.set_caption('drawing')
#set up the colors
black = ( 0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = ( 0, 255, 0)
blue = ( 0, 0, 255)
imageImg = pygame.image.load('baddie.png')
imagex = 320
imagey = 220
direction = 'left'
fontObj = pygame.font.Font('freesansbold.ttf', 32)
text = fontObj.render('Hello World!', True, green, blue)
rect = text.get_rect()
rect.center = (200, 150)
# the main game loop
while True:
screen.fill(white)
# draw a green polygon onto the surface
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
# draw some blue lines onto the surface
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
# draw a blue circle onto the surface
pygame.draw.circle(screen, blue, (300, 50), 100, 0)
# draw a red ellipse onto the surface
pygame.draw.ellipse(screen, red, (300, 250, 80,80), 1)
# draw a red rectangle onto the surface
pygame.draw.rect(screen,red, (200, 150, 100, 50))
# draw the text onto the surface
screen.blit(text, rect)
if direction == 'right':
imagex += 5
if imagex == 320:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 220:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(imageImg, (imagex, imagey))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
파이 게임과 창 설정 :
import pygame,sys
from pygame.locals import *
pygame.init()
#set up the window
screen = pygame.display.set_mode((500,400), 0, 32)
pygame.display.set_caption('drawing')
흰색 배경 그리기 :
이 함수에서는 배경색을 정의합니다.
screen.fill(white)
녹색 다각형 그리기 :
여기서 폴리곤의 모든 코너의 표시 표면, 색상 및 위치 (x 및 y 좌표)를 정의합니다. 시계 및 반 시계 방향으로 설정할 수 있습니다.
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
파란 선 그리기 :
이 함수에서는 표시 표면, 색상, 첫 번째 및 마지막 점과 선의 너비를 정의합니다 (너비를 지정하지 않으면 단지 1입니다).
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
파란색 원 그리기 :
이 함수에서 원의 표시 표면, 색상, 위치, 반지름 및 너비를 정의합니다 (너비에 0을 지정하면 일반 원).
pygame.draw.circle(screen, blue, (300, 50), 100, 0)
타원 그리기 :
이 함수에서는 표시면, 색상, 위치, 가로 크기 및 세로 크기와 너비를 정의합니다.
pygame.draw.ellipse(screen, red, (300, 250, 80,80), 1)
직사각형 그리기 :
이 함수에서는 표시면, 색상, 위치 및 가로 및 세로 크기를 정의합니다.
pygame.draw.rect(screen,red, (200, 150, 100, 50))
텍스트 정의 :
먼저이 함수를 사용하여 텍스트의 유형과 크기를 정의하십시오.
fontObj = pygame.font.Font('freesansbold.ttf', 32)
그런 다음 텍스트가 굵게 표시되면 실제 텍스트를 정의하고 원하는 경우 색상을 지정합니다. 이 함수로 할 수 있습니다 :
text = fontObj.render('Hello World!', True, green, blue)
텍스트를 표시하려면 파이 게임에이 함수를 사용하여 알려야합니다.
rect = text.get_rect()
텍스트 중심의 위치를 정의하려면이 함수를 사용하면됩니다.
rect.center = (200, 150)
텍스트 그리기 :
마킹 및 / 또는 센터를 정의한 경우 :
screen.blit(text, rect)
그렇지 않으면 텍스트의 위치를 정의하여 텍스트를 다음과 같이 그려야합니다.
screen.blit(text, (100,50))
이미지 정의 :
여기서 사용하려는 이미지를 정의합니다 (이렇게하면 이미지 파일은 프로그램 파일과 동일한 디렉토리에 있어야 함), 시작 위치 (x 및 y) 및 이미지의 방향을 정의합니다.
image = pygame.image.load('image.png')
baddiex = 320
baddiey = 220
direction = 'left'
이미지 애니메이션하기 :
코드의이 부분을 사용하여 이미지의 방향을 확인하고, 코너에 도달 한 경우 방향을 변경하고, 그렇지 않으면 방향을 바꾸어 5 픽셀 더 멀리 그립니다.
if direction == 'right':
imagex += 5
if imagex == 360:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 260:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(imageImg, (imagex, imagey))
참고 : 내 이미지는 20x20 픽셀입니다. if imagex == 360:
if imagey == 260:
와 if imagey == 260:
사용 if imagex == 360:
if imagey == 260:
내 이미지는 다른 두 모퉁이와 마찬가지로 창 가장자리에서 20 픽셀이므로. 이미지의 크기가 다른 경우 해당 숫자를 변경해야 할 수 있습니다.
종료 확인 :
여기에서는 파이 게임 창을 닫았는지 확인하고, 그렇다면 창을 닫습니다. 프로그램의 아무 곳이나 쓰지 않으면 아마 창을 닫을 수 없습니다.
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
화면 업데이트 :
이 기능을 사용하면 사용자가 그린 모든 것을 볼 수 있도록 화면을 업데이트 할 수 있습니다.
pygame.display.update()
FPS 설정 :
이 기능을 사용하면 파이 게임이 충분히 잠자기 상태가되어 FPS 설정이 존중됩니다.
fpsClock.tick(FPS)
PIL과 함께 사용
PIL과 Pygame을 둘 다 사용하지 않아야하기 때문에 Pygame Surface와 PIL Images간에 변환 할 수있는 방법이 필요합니다.
이를 위해 두 라이브러리에서 제공하는 "tostring"및 "fromstring"함수를 사용할 수 있습니다.
PIL에서 파이 게임으로의 전환 :
strFormat = 'RGBA'
raw_str = image.tostring("raw", strFormat)
surface = pygame.image.fromstring(raw_str, image.size, strFormat)
파이 게임에서 PIL 로의 전환 :
strFormat = 'RGBA'
raw_str = pygame.image.tostring(surface, strFormat, False)
image = Image.frombytes(strFormat, surface.get_size(), raw_str)