노는게 제일 좋습니다.

pygame 사각형 직선이동 애니메이션 본문

Python/기타 공부

pygame 사각형 직선이동 애니메이션

노는게 제일 좋습니다. 2016. 2. 7. 01:38

코드 출처 http://inventwithpython.com/

http://inventwithpython.com/animation.py


pygame 에서의 애니메이션 예제로, 게임루프가 어떻게 돌아가는지 알 수 있는것 같다.

별 내용은 없음.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import pygame
import sys
import time
from pygame.locals import *
 
pygame.init()
 
WINDOWWIDTH = 400
WINDOWHEIGHT = 400
windowSurface = pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT),0,32)
pygame.display.set_caption('Animation')
 
DOWNLEFT = 1
DOWNRIGHT=3
UPLEFT = 7
UPRIGHT= 9
 
MOVESPEED = 4
 
 
BLACK = (0,0,0)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
 
 
#블록데이터 구조 설정
b1 = { 'rect':pygame.Rect(300,80,50,100), 'color':RED, 'dir':UPRIGHT}
b2 = { 'rect':pygame.Rect(200,200,20,20), 'color':GREEN, 'dir':UPLEFT}
b3 = { 'rect':pygame.Rect(100,150,60,60), 'color':BLUE, 'dir':DOWNLEFT}
blocks = [b1,b2,b3]
 
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
 
    windowSurface.fill(BLACK)
 
    for b in blocks:
        if b['dir'== DOWNLEFT:
            b['rect'].left -= MOVESPEED
            b['rect'].top += MOVESPEED
        if b['dir'== DOWNRIGHT:
            b['rect'].left += MOVESPEED
            b['rect'].top += MOVESPEED
        if b['dir'== UPLEFT:
            b['rect'].left -= MOVESPEED
            b['rect'].top -= MOVESPEED
        if b['dir'== UPRIGHT:
            b['rect'].left += MOVESPEED
            b['rect'].top -= MOVESPEED
 
        if b['rect'].top < 0:
            if b['dir'== UPLEFT:
                b['dir'= DOWNLEFT
            if  b['dir'== UPRIGHT:
                b['dir'= DOWNRIGHT
        if b['rect'].bottom > WINDOWHEIGHT:
            if b['dir'== DOWNLEFT:
                b['dir'= UPLEFT
            if b['dir'== DOWNRIGHT:
                b['dir'= UPRIGHT
        if b['rect'].left < :
            if b['dir'== DOWNLEFT:
                b['dir'= DOWNRIGHT
            if b['dir'== UPLEFT:
                b['dir'= UPRIGHT
        if b['rect'].right > WINDOWWIDTH:
            if b['dir'== DOWNRIGHT:
                b['dir'= DOWNLEFT
            if b['dir'== UPRIGHT:
                b['dir'= UPLEFT
 
        pygame.draw.rect(windowSurface, b['color'], b['rect'])
 
    pygame.display.update()
    time.sleep(0.02)
 
 
 
 
 
 
 
 
        
 
cs



위 소스코드를 바꿨을 때 일어나는 일을 담은 영상.
두 가지 부분을 바꾸어본다.
알수있는 사실은, update()가 이전의 화면을 지우고 새로운 서피스들을 그리는 것이 아니라는 것.



Comments