๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/Python

pygame | ๊ธฐ๋ณธ ๊ตฌ์กฐ

  • -

๊ฐœ์ธ ํ”„๋กœ์ ํŠธ ํŒŒ์ด์ฌ ๊ฒŒ์ž„!

 

๋ง‰๋ง‰ํ•˜๋‹ค ์ƒ๊ฐ๋ง๊ณ  ์ผ๋‹จ ํ•ด๋ณด์ž!!!

 

 


 

 

pygame ๊ธฐ๋ณธ ์‹คํ–‰ ๊ตฌ์กฐ

 

1. pygame ์„ ์–ธ(import)

# pygame ์„ pg ๋กœ ์ค„์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
import pygame as pg

 

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

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

 

3. pygame ์—์„œ ์‚ฌ์šฉํ•  ์ „์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ

- size : x ํฌ๊ธฐ์™€ y ํฌ๊ธฐ

- screen : pygame.display.set_mode(size)

# pygame GUI ์ฐฝ ๊ตฌ์„ฑ
size = [400, 300] # ์ฐฝ ํฌ๊ธฐ

# ์ƒ์„ฑํ•  GUI ์ฐฝ์˜ ํฌ๊ธฐ ์„ค์ •
# ํ™”๋ฉด์„ ์ดˆ๊ธฐํ™” ํ•˜๊ฑฐ๋‚˜, ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋“ฑ์€ ํ•ด๋‹น screen ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ ์šฉ
screen = pg.display.set_mode(size)

-pygame. display.set_caption("์ด๋ฆ„")

# GUI ์ฐฝ์ด ์ผœ์งˆ ๋•Œ, ์ฐฝ์˜ ์ด๋ฆ„์„ ์„ค์ •
pg.display.set_caption("Game Title")

- clock : pygame.time.Clock()

# ํ™”๋ฉด์„ ์ดˆ๋‹น ๋ช‡๋ฒˆ ์ถœ๋ ฅํ•˜๋Š”๊ฐ€๋ฅผ ์„ค์ •
done = False
clock = pg.time.Clock()

 

4. pygame ๋ฉ”์ธ ๋ฃจํ”„(while๋ฌธ)

- ๊ฒŒ์ž„ ์‹คํ–‰ ๋™์•ˆ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์„ค์ •

- ์‚ฌ์šฉ์ž์˜ ๊ฒŒ์ž„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

- pygame Event ์„ค์ •

# ๋ฉ”์ธ ์ด๋ฒคํŠธ ๋ฃจํ”„
# ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ ํด๋ฆญ์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•ด์„œ for๋ฌธ์„ ํ†ตํ•ด ๊ฒ€์‚ฌํ•˜๋Š” ๊ตฌ์กฐ
for event in pg.event.get():
	# ์ด๋ฒคํŠธ๊ฐ€ ๋งŒ์•ฝ .QUIT ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ, GUI ์ฐฝ์—์„œ X ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ์ข…๋ฃŒ
    if event.type == pg.QUIT: 
    	# ์ข…๋ฃŒ ์ด๋ฒคํŠธ๊ฐ€ ๋งž๋‹ค๋ฉด ๋ฉ”์ธ ๋ฃจํ”„์˜ while๋ฌธ์ด ๋” ์ด์ƒ ๋Œ์•„๊ฐ€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ
        # ์•ˆ์ „์žฅ์น˜ ํ•„์ˆ˜
        done = True

pygame ํ™”๋ฉด ์„ค์ •

screen.fill(WHITE) # ์ฐฝ์˜ ์ „์ฒด ํ™”๋ฉด์„ ์ฑ„์›Œ์ฃผ๋Š” ํ•จ์ˆ˜ ์‹คํ–‰

- ์‚ฌ์šฉ์ž ํ–‰์œ„

# ์‚ฌ์šฉ์ž์˜ ํ–‰์œ„
pg.draw.polygon(screen, GREEN, [[30, 150], [125, 100], [220, 150]], 5)
pg.draw.polygon(screen, GREEN, [[30, 150], [125, 100], [220, 150]], 0)
pg.draw.lines(screen, RED, False, [[50, 150], [50, 250], [200, 250], [200, 150]], 5)
pg.draw.rect(screen, BLACK, [75, 175, 75, 50], 5)
pg.draw.rect(screen, BLUE, [75, 175, 75, 50], 0)
pg.draw.line(screen, BLACK, [112, 175], [112, 225], 5)
pg.draw.line(screen, BLACK, [75, 200], [150, 200], 5)

- pygame.draw ํ•จ์ˆ˜ ์ข…๋ฅ˜

๋”๋ณด๊ธฐ

์‚ฌ๊ฐํ˜• - pygame.draw.rect
์‚ผ๊ฐํ˜• - pygame.draw.polygon
์› - pygame.draw.circle
ํƒ€์› - pygame.draw.ellipse
์›(ํŠน์ • ๋ถ€๋ถ„๊นŒ์ง€ ๊ทธ๋ฆฌ๊ธฐ) - pygame.draw.arc
์„  - pygame.draw.line
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„  - pygame.draw.lines
๋ถ€๋“œ๋Ÿฌ์šด ์„  - pygame.draw.aaline
์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ€๋“œ๋Ÿฌ์šด ์„  - pygame.draw.aalines

- ๋ฉ”์ธ ๋ฃจํ”„ ์—…๋ฐ์ดํŠธ

# ์ง€๊ธˆ๊นŒ์ง€ ํ™”๋ฉด์— ์ž‘์„ฑํ•œ ๋ชจ๋“  ํ–‰์œ„๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
# ๋ฉ”์ธ ๋ฃจํ”„์˜ ๋์— ํ•ด๋‹นํ•˜๋Š” ํ•„์ˆ˜ ์กฐ๊ฑด
pg.display.flip()

 

 

๊ฒฐ๊ณผ

 


 

๋‹ค๋ฅธ ์†Œ์Šค ์ฝ”๋“œ ์ž์‹ ์˜ ๋ง ํ’€์ด

import sys
import pygame as pg

# ์ƒ‰์ƒ ๋ณ€์ˆ˜
YELLOW = (255, 255, 0)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GRAY = (150, 150, 150)

def game(): # ํ•จ์ˆ˜ ์ •์˜
    pg.init() # pygame ์ดˆ๊ธฐํ™”
    pg.display.set_caption('Mini Game') # pygame ์˜ ์ฐฝ ์ด๋ฆ„
    main_window = pg.display.set_mode((800, 600)) # pygame ์ฐฝ ํฌ๊ธฐ

    clock = pg.time.Clock() # pygame ์˜ ์ถœ๋ ฅ ์‹œ๊ฐ„

    while True: # pygame ์— ๋Œ€ํ•œ ๋ฉ”์ธ ๋ฃจํ”„
        for e in pg.event.get(): # ๊ฐ์ง€ํ•œ ์ด๋ฒคํŠธ ๊ฐ’์„ e์˜ ๋ณ€์ˆ˜ ์ง€์ •
            if e.type == pg.QUIT:
                pg.quit()
                sys.exit()

        main_window.fill(BLACK) # pygame ์˜ ์ฐฝ ์ „์ฒด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ƒ‰

        pg.draw.circle(main_window, YELLOW, [200, 200], 30) # ์›์„ ๊ทธ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜

        pg.display.update() # pygame ์—…๋ฐ์ดํŠธ
        clock.tick(10) # ํ”„๋ ˆ์ž„ ์„ค์ •



if __name__ == '__main__':
    game()
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.