์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
|๊ณต์‹ ์‚ฌ์ดํŠธ. ๊ณต์‹ ๋ฌธ์„œ์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
1. ๊ฐœ์š”2. ์ฃผ์š” ๋ชจ๋“ˆ
2.1. pygame2.2. sprite
3. ์˜ˆ์ œ
3.1. Hello, world!
4. ์—ฌ๋‹ด

1. ๊ฐœ์š”[ํŽธ์ง‘]

Python์œผ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ ๊ฒŒ์ž„ ๋“ฑ์˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ‘œํ˜„์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. SDL ๊ธฐ๋ฐ˜์ด๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์ด์ž ๋ฌด๋ฃŒ ๋„๊ตฌ์ด๋ฉฐ, Python์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ด๋ผ๋ฉด ์–ด๋””์„œ๋“  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ๋„๊ตฌ์ด์ง€๋งŒ ์ด๋ฏธ์ง€ ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์กฐ์ด์Šคํ‹ฑ ์ž…๋ ฅ, ์Œ์•… ์žฌ์ƒ ๋“ฑ์˜ ๊ธฐ๋Šฅ๋งŒ ๋–ผ์–ด๋‹ค ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค.

์ƒ์ง•์€ ๊ฒŒ์ž„ํŒจ๋“œ๋ฅผ ๋ฌผ๊ณ  ์žˆ๋Š” ๋…ธ๋ž€์ƒ‰ ๋ฑ€์ด๋‹ค.

๋น„์ฃผ์–ผ ๋…ธ๋ฒจ ํˆด์ธ Ren'Py ๋˜ํ•œ Pygame์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ๋‹ค.

2. ์ฃผ์š” ๋ชจ๋“ˆ[ํŽธ์ง‘]

2.1. pygame[ํŽธ์ง‘]

pygame ๋ชจ๋“ˆ๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” pygame.init(), pygame.quit() ๋“ฑ์œผ๋กœ ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒ๋ฅผ ์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค.

2.2. sprite[ํŽธ์ง‘]

pygame.sprite.Sprite() ํด๋ž˜์Šค๋กœ ์Šคํ”„๋ผ์ดํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. sprite์˜ ๋ชจ์Œ์ธ pygame.sprite.Group() ํด๋ž˜์Šค๋กœ ์Šคํ”„๋ผ์ดํŠธ๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์˜ˆ์ œ[ํŽธ์ง‘]

3.1. Hello, world![ํŽธ์ง‘]

import pygame # pygame ๋ชจ๋“ˆ์˜ ์ž„ํฌํŠธ
import sys # ์™ธ์žฅ ๋ชจ๋“ˆ
from pygame.locals import * # QUIT ๋“ฑ์˜ pygame ์ƒ์ˆ˜๋“ค์„ ๋กœ๋“œํ•œ๋‹ค.

width = 600 # ์ƒ์ˆ˜ ์„ค์ •
height = 400
white = (255, 255, 255)
black = (  0,   0,   0)
fps = 30

pygame.init() # ์ดˆ๊ธฐํ™”

pygame.display.set_caption('Hello, world!') # ์ฐฝ ์ œ๋ชฉ ์„ค์ •
displaysurf = pygame.display.set_mode((width, height), 0, 32) # ๋ฉ”์ธ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ์„ค์ •ํ•œ๋‹ค
clock = pygame.time.Clock() # ์‹œ๊ฐ„ ์„ค์ •

gulimfont = pygame.font.SysFont('๊ตด๋ฆผ', 70) # ์„œ์ฒด ์„ค์ •
helloworld = gulimfont.render('Hello, world!', 1, black) 
# .render() ํ•จ์ˆ˜์— ๋‚ด์šฉ๊ณผ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ, ์ƒ‰์„ ์ „๋‹ฌํ•˜์—ฌ ๊ธ€์ž ์ด๋ฏธ์ง€ ์ƒ์„ฑ
hellorect = helloworld.get_rect() # ์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€์˜ rect ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
hellorect.center = (width / 2, height / 2) # ํ•ด๋‹น rect์˜ ์ค‘์•™์„ ํ™”๋ฉด ์ค‘์•™์— ๋งž์ถ˜๋‹ค

while True: # ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•œ๋‹ค.
    for event in pygame.event.get(): # ๋ฐœ์ƒํ•œ ์ž…๋ ฅ event ๋ชฉ๋ก์˜ event๋งˆ๋‹ค ๊ฒ€์‚ฌ
        if event.type == QUIT: # event์˜ type์ด QUIT์— ํ•ด๋‹นํ•  ๊ฒฝ์šฐ
            pygame.quit() # pygame์„ ์ข…๋ฃŒํ•œ๋‹ค
            sys.exit() # ์ฐฝ์„ ๋‹ซ๋Š”๋‹ค
    displaysurf.fill(white) # displaysurf๋ฅผ ํ•˜์–€์ƒ‰์œผ๋กœ ์ฑ„์šด๋‹ค
    displaysurf.blit(helloworld, hellorect) # displaysurf์˜ hellorect์˜ ์œ„์น˜์— helloworld๋ฅผ ๋ฟŒ๋ฆฐ๋‹ค
    
    pygame.display.update() # ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค
    clock.tick(fps) # ํ™”๋ฉด ํ‘œ์‹œ ํšŒ์ˆ˜ ์„ค์ •๋งŒํผ ๋ฃจํ”„์˜ ๊ฐ„๊ฒฉ์„ ๋‘”๋‹ค

pygame ์ดˆ๊ธฐํ™”, ๊ธฐ๋ณธ ์„ธํŒ…๊ณผ ๋””์Šคํ”Œ๋ ˆ์ด ์ƒ์— ํฐํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ์ดˆ ์˜ˆ์ œ์ด๋‹ค. ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


4. ์—ฌ๋‹ด[ํŽธ์ง‘]


ํ•œ๋•Œ, pygame ๋ฉ”์ธ ํ™”๋ฉด์— ์•„์นด์ด๋ธŒ ๋งํฌ์™€ github ๋งํฌ๊ฐ€ ์žˆ๊ณ , ๊ฒ€์ •ํ™”๋ฉด์— I can't breathe๋ผ๊ณ  ์ ํ˜€์žˆ๋˜ ์ ์ด ์žˆ์—ˆ๋‹ค.์•„์นด์ด๋ธŒ ๋งํฌ