5. pygame 예제 - 회전
페이지 정보
작성자 관리자 댓글 0건 조회 2,055회 작성일 21-02-17 08:25본문
5. pygame 예제 - 회전
예제 1.
import pygame as py
# define constants
WIDTH = 500
HEIGHT = 500
FPS = 200
# define colors
BLACK = (0 , 0 , 0)
GREEN = (0 , 255 , 0)
# initialize pygame and create screen
py.init()
screen = py.display.set_mode((WIDTH , HEIGHT))
# for setting FPS
clock = py.time.Clock()
rot = 0
rot_speed = .2
# define a surface (RECTANGLE)
image_orig = py.Surface((1 , 100))
# for making transparent background while rotating an image
image_orig.set_colorkey(BLACK)
# fill the rectangle / surface with green color
image_orig.fill(GREEN)
# creating a copy of orignal image for smooth rotation
image = image_orig.copy()
image.set_colorkey(BLACK)
# define rect for placing the rectangle at the desired position
rect = image.get_rect()
x, y = py.mouse.get_pos()
rect.center = (x, y)
# keep rotating the rectangle until running is set to False
running = True
while running:
x, y = py.mouse.get_pos()
# set FPS
clock.tick(FPS)
# clear the screen every time before drawing new objects
screen.fill(BLACK)
# check for the exit
for event in py.event.get():
if event.type == py.QUIT:
running = False
# rotating the orignal image
keys = py.key.get_pressed()
if keys[py.K_a]:
rot_speed = .2
if keys[py.K_d]:
rot_speed = -.2
# defining angle of the rotation
rot = (rot + rot_speed) % 360 # 이미지의 새로운 각도를 계산합니다 :
# rotating the orignal image
image = py.transform.rotate(image_orig, rot)
rect = image.get_rect(center = (x, y))
# drawing the rotated rectangle to the screen
screen.blit(image, rect)
# flipping the display after drawing everything
py.display.flip()
py.quit()
예제 2.
- 스페이스 바로 돌림판의 회전과 정지를 정함
- 정지 시 천천히 멈춤 (회전각을 0까지 빼줌)
# -*- coding: utf-8 -*-
import sys
import pygame
from pygame.locals import *
import time
# 초당 프레임수를 정의
TARGET_FPS = 30
clock = pygame.time.Clock()
# 색 정의
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
WHITE = (255, 255, 255)
# 라이브러리 및 디스플레이 초기화
pygame.init()
screen = pygame.display.set_mode((600, 400), DOUBLEBUF) # 윈도우 크기 및 속성 설정
pygame.display.set_caption('돌림판') # 타이틀바의 텍스트를 설정
# 이미지 파일을 로딩
img = pygame.image.load('images.png') # 돌림판 이미지
img2 = pygame.image.load('images2.jpg') # 화살표
degree = 0
flag = True
rad = 100
stop_time = 3 # 돌림판이 멈출 때까지의 시간 (클수록 빨리 멈춤)
# 메인 루프
while True:
for event in pygame.event.get():
# 이벤트를 처리하는 부분
if event.type == QUIT:
pygame.quit()
sys.exit()
# 키보드 이벤트 처리
if event.type == KEYDOWN:
# 스페이스 -> 토글
if event.key == 32:
if flag == True:
flag = False
elif flag == False:
flag = True
rad = 100
# 게임의 상태를 화면에 그려주는 부분
screen.fill(WHITE)
# 이미지 파일 회전하여 그리기
x = 350
y = 200
rotated = pygame.transform.rotate(img, degree) # degree 만큼 회전
rect = rotated.get_rect()
rect.center = (x, y)
screen.blit(rotated, rect)
# 플래그의 상태가 True면 회전, False면 천천히 정지
if flag == True:
degree += rad
elif flag == False:
if rad > 0:
rad -= stop_time
degree += rad
screen.blit(img2, (70, 180)) # 화살표 그리기
pygame.display.flip() # 화면 전체를 업데이트
clock.tick(TARGET_FPS) # 프레임 수 맞추기
댓글목록
등록된 댓글이 없습니다.