[ English | δΈζ | Deutsch | EspaΓ±ol | FranΓ§ais | Italiano | ζ₯ζ¬θͺ | νκ΅μ΄ | PortuguΓͺs | Π ΡΡΡΠΊΠΈΠΉ | TΓΌrkΓ§e | Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° ]
Pyxelμ Pythonμ μν λ νΈλ‘ κ²μ μμ§μ λλ€.
16κ°μ§ μμλ§ μ¬μ©νκ±°λ λμμ 4κ°μ§ μλ¦¬λ§ μ¬μνλ λ± λ νΈλ‘ κ²μμ λμ¬ λ²ν μ¬μμΌλ‘, Pythonμμ ν½μ μνΈ μ€νμΌμ κ²μμ λ§μκ» λ§λ€ μ μμ΅λλ€.
Pyxel κ°λ°μ λκΈ°λ μ¬μ©μμ νΌλλ°±μ λλ€. GitHubμμ Pyxelμ λ³μ μ μ£ΌμΈμ!
Pyxelμ μ¬μ λ° APIλ PICO-8 λ° TIC-80 μμ μκ°μ λ°μμ΅λλ€.
Pyxelμ μ€ν μμ€λ‘, 무λ£λ‘ μμ λ‘κ² μ¬μ©ν μ μμ΅λλ€. Pyxelκ³Ό ν¨κ» λ νΈλ‘ μ€νμΌμ κ²μμ λ§λ€μ΄λ³΄μΈμ!
- Windows, Mac, Linux, Webμμ μλ
- PythonμΌλ‘ νλ‘κ·Έλλ°
- 16μ νλ νΈ
- 256x256 ν¬κΈ°μ μ΄λ―Έμ§ λ± ν¬ 3κ°
- 256x256 ν¬κΈ°μ νμΌ λ§΅ 8κ°
- 4κ°μ μ¬μ΄λ μ±λ λ° 64κ°μ μ μ κ°λ₯ν μ¬μ΄λ
- μμμ μ¬μ΄λλ₯Ό μ‘°ν© κ°λ₯ν 8κ°μ μμ
- ν€λ³΄λ, λ§μ°μ€, κ²μν¨λ μ λ ₯
- μ΄λ―Έμ§/μ¬μ΄λ μλν°
Python3 (λ²μ 3.8 μ΄μ) μ μ€μΉν ν, λ€μ λͺ λ Ήμ΄λ₯Ό μ€νν©λλ€.
pip install -U pyxel
곡μ μ€μΉ νλ‘κ·Έλ¨μ μ¬μ©νμ¬ Pythonμ μ€μΉνλ κ²½μ° pyxel
λͺ
λ Ήμ νμ±ννλ €λ©΄ Add Python 3.x to PATH
νμΈλμ μ ννμμμ€.
Homebrew λ₯Ό μ€μΉν ν λ€μ λͺ λ Ήμ μ€νν©λλ€:
brew install pipx
pipx ensurepath
pipx install pyxel
νμ΄μ
μ μ€μΉν ν λ²μ μ μ
λ°μ΄νΈνλ €λ©΄ pipx upgrade pyxel
μ μ€νν©λλ€.
SDL2 ν¨ν€μ§ (Ubuntuμ κ²½μ° libsdl2-dev
), Python3 (λ²μ 3.8 μ΄μ), python3-pip
λ₯Ό μ€μΉν ν, λ€μ λͺ
λ Ήμ΄λ₯Ό μ€νν©λλ€.
sudo pip3 install -U pyxel
μμ λ°©λ²μ΄ μλνμ§ μμΌλ©΄ Makefile μ μ§μΉ¨μ λ°λΌ μ체 λΉλλ₯Ό μλνμμμ€.
Pyxelμ μΉ λ²μ μ Python λλ Pyxel μ€μΉκ° νμνμ§ μμΌλ©° μ§μλλ μΉ λΈλΌμ°μ κ° μλ PCλ λ¬Όλ‘ μ€λ§νΈν° λ° νλΈλ¦Ώμμ μ€νλ©λλ€.
ꡬ체μ μΈ μ§μΉ¨μ μ΄ νμ΄μ§ λ₯Ό μ°Έμ‘°νμμμ€.
Pyxel μ€μΉ ν, λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄ νμ¬ ν΄λμ Pyxel μμ νμΌμ 볡μ¬ν μ μμ΅λλ€.
pyxel copy_examples
볡μ¬λλ μμ νμΌμ λ€μκ³Ό κ°μ΅λλ€:
01_hello_pyxel.py | κ°λ¨ν μ ν리μΌμ΄μ | Demo | Code |
02_jump_game.py | Pyxel 리μμ€ νμΌμ μ¬μ©ν μ ν κ²μ | Demo | Code |
03_draw_api.py | Drawing API λ°λͺ¨ | Demo | Code |
04_sound_api.py | Sound API λ°λͺ¨ | Demo | Code |
05_color_palette.py | μμ νλ νΈ λͺ©λ‘ | Demo | Code |
06_click_game.py | λ§μ°μ€ ν΄λ¦ κ²μ | Demo | Code |
07_snake.py | BGMμ΄ ν¬ν¨λ μ€λ€μ΄ν¬ κ²μ | Demo | Code |
08_triangle_api.py | Triangle drawing API λ°λͺ¨ | Demo | Code |
09_shooter.py | νλ©΄ μ νμ΄ μλ μν κ²μ | Demo | Code |
10_platformer.py | λ§΅μ΄ μλ ν‘ μ€ν¬λ‘€ νλ«νΌ κ²μ | Demo | Code |
11_offscreen.py | Image ν΄λμ€λ₯Ό μ¬μ©ν μ€νμ€ν¬λ¦° λ λλ§ | Demo | Code |
12_perlin_noise.py | νλ¦° λ Έμ΄μ¦ μ λλ©μ΄μ | Demo | Code |
13_bitmap_font.py | λΉνΈλ§΅ κΈκΌ΄ 그리기 | Demo | Code |
14_synthesizer.py | μ€λμ€ μ΅μ€ν¬μ κΈ°λ₯μ νμ©ν μ λμ¬μ΄μ | Demo | Code |
15_tiled_map_file.py | νμΌ λ§΅ νμΌ (.tmx) λ‘λ λ° κ·Έλ¦¬κΈ° | Demo | Code |
16_transform.py | μ΄λ―Έμ§ νμ λ° ν¬κΈ° μ‘°μ | Demo | Code |
99_flip_animation.py | flip κΈ°λ₯μ΄ μλ μ λλ©μ΄μ (μΉ νλ«νΌμ΄ μλ κ²½μ°μλ§ ν΄λΉ) | Demo | Code |
30SecondsOfDaylight.pyxapp | μ 1ν Pyxel Jam μ°μΉ μν (Adam μ μ) | Demo | Code |
megaball.pyxapp | μμΌμ΄λ λ³Ό 물리 κ²μ (Adam μ μ) | Demo | Code |
8bit-bgm-gen.pyxapp | λ°°κ²½ μμ μμ±κΈ° (frenchbread μ μ) | Demo | Code |
λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μμ νμΌμ μ€νν μ μμ΅λλ€.
cd pyxel_examples
pyxel run 01_hello_pyxel.py
pyxel play 30SecondsOfDaylight.pyxapp
Python μ€ν¬λ¦½νΈμμ Pyxel λͺ¨λμ κ°μ Έμ¨ λ€ init
ν¨μλ‘ νλ©΄ ν¬κΈ°λ₯Ό μ§μ ν ν, run
ν¨μλ‘ Pyxel μ ν리μΌμ΄μ
μ μμν©λλ€.
import pyxel
pyxel.init(160, 120)
def update():
if pyxel.btnp(pyxel.KEY_Q):
pyxel.quit()
def draw():
pyxel.cls(0)
pyxel.rect(10, 10, 20, 20, 11)
pyxel.run(update, draw)
run
ν¨μμ μΈμλ‘λ νλ μ κ°±μ μ μ²λ¦¬νλ update
ν¨μμ νμν λ νλ©΄μ 그리λ draw
ν¨μκ° μ¬μ©λ©λλ€.
μ€μ μ ν리μΌμ΄μ μμλ μλμ κ°μ΄ ν΄λμ€μμ Pyxel μ½λλ₯Ό κ°μΈλ κ²μ΄ μ’μ΅λλ€.
import pyxel
class App:
def __init__(self):
pyxel.init(160, 120)
self.x = 0
pyxel.run(self.update, self.draw)
def update(self):
self.x = (self.x + 1) % pyxel.width
def draw(self):
pyxel.cls(0)
pyxel.rect(self.x, 0, 8, 8, 9)
App()
μ λλ©μ΄μ
μμ΄ κ°λ¨ν κ·Έλν½μ λ§λ€ λ show
κΈ°λ₯μ μ¬μ©νλ©΄ μ½λλ₯Ό λ κ°κ²°νκ² λ§λ€ μ μμ΅λλ€.
import pyxel
pyxel.init(120, 120)
pyxel.cls(1)
pyxel.circb(60, 60, 40, 7)
pyxel.show()
μμ±λ νμ΄μ¬ μ€ν¬λ¦½νΈλ python
λͺ
λ Ήμ μ¬μ©νμ¬ μ€νν μ μμ΅λλ€:
python PYTHON_SCRIPT_FILE
pyxel run` λͺ λ ΉμΌλ‘ μ€νν μλ μμ΅λλ€:
pyxel run PYTHON_SCRIPT_FILE
λν pyxel watch
λͺ
λ Ήμ μ¬μ©νλ©΄ μ§μ λ λλ ν 리μ λ³κ²½ μ¬νμ λͺ¨λν°λ§νμ¬ λ³κ²½ μ¬νμ΄ κ°μ§λλ©΄ μλμΌλ‘ νλ‘κ·Έλ¨μ λ€μ μ€νν μ μμ΅λλ€:
pyxel watch WATCH_DIR PYTHON_SCRIPT_FILE
λλ ν°λ¦¬ λͺ¨λν°λ§μ Ctrl(Command)+C
λ₯Ό λλ¬ μ€μ§ν μ μμ΅λλ€.
Pyxel μ ν리μΌμ΄μ μ€ν μ€μ, μλμ νΉμ μ‘°μμ μ¬μ©ν μ μμ΅λλ€.
Esc
μ ν리μΌμ΄μ μ’ λ£Alt(Option)+1
λ°ν νλ©΄μ μ€ν¬λ¦°μ· μ μ₯Alt(Option)+2
νλ©΄ μΊ‘μ²μ λ Ήν μμ μκ° μ΄κΈ°νAlt(Option)+3
νλ©΄ μΊ‘μ² νμΌμ λ°ν νλ©΄μ μ μ₯ (μ΅λ 10μ΄)Alt(Option)+9
νλ©΄ λͺ¨λ (Crisp/Smooth/Retro) μ ννκΈ°Alt(Option)+0
μ±λ₯ λͺ¨λν° (fps, update time, draw time) μ νμ/νμ ν΄μ Alt(Option)+Enter
μ 체 νλ©΄ μ νShift+Alt(Option)+1/2/3
ν΄λΉ μ΄λ―Έμ§ λ± ν¬λ₯Ό λ°μ€ν¬ν±μ μ μ₯ν©λλ€Shift+Alt(Option)+0
νμ¬ μμνλ₯Ό λ°ννλ©΄μ μ μ₯
Pyxel Editorλ Pyxel μ ν리μΌμ΄μ μμ μ¬μ©λλ μ΄λ―Έμ§μ μ¬μ΄λλ₯Ό μμ±ν μ μμ΅λλ€.
λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄ μμν μ μμ΅λλ€.
pyxel edit PYXEL_RESOURCE_FILE
μ§μ ν Pyxel 리μμ€ νμΌ (.pyxres) μ΄ μ‘΄μ¬νλ κ²½μ°μλ ν΄λΉ νμΌμ λΆλ¬μ€κ³ , μ‘΄μ¬νμ§ μλ κ²½μ° μ§μ ν μ΄λ¦μΌλ‘ μ 리μμ€ νμΌμ μμ±ν©λλ€. νμΌ μ΄λ¦μ μλ΅νμ κ²½μ°, κΈ°λ³Έ νμΌ μ΄λ¦μ my_resource.pyxres
μ
λλ€.
Pyxel Editor μ€ν μ€ λ€λ₯Έ 리μμ€ νμΌμ λλκ·Έ μ€ λλ‘νλ κ²μΌλ‘ μμ μ€μΈ 리μμ€ νμΌμ λ³κ²½ν μ μμ΅λλ€.
λ§λ€μ΄μ§ 리μμ€ νμΌμ load
ν¨μλ₯Ό ν΅ν΄ λΆλ¬μ¬ μ μμ΅λλ€.
Pyxel Editorμλ λ€μκ³Ό κ°μ νΈμ§ λͺ¨λκ° μμ΅λλ€.
μ΄λ―Έμ§ νΈμ§κΈ°
μ΄λ―Έμ§ λ± ν¬μ μ΄λ―Έμ§λ₯Ό νΈμ§νλ νλ©΄μ λλ€.
μ΄λ―Έμ§ νμΌ (PNG/GIF/JPEG) μ μ΄λ―Έμ§ νΈμ§κΈ°λ‘ λμ΄λ€ λμ νμ¬ μ νν μ΄λ―Έμ§ λ± ν¬μ μ΄λ―Έμ§λ₯Ό λ‘λν©λλ€.
νμΌ λ§΅ νΈμ§κΈ°
μ΄λ―Έμ§ λ± ν¬μ μ΄λ―Έμ§λ₯Ό νμΌ λͺ¨μμΌλ‘ λμ΄λμ νμΌ λ§΅μ νΈμ§νλ νλ©΄μ λλ€.
TMX νμΌ (Tiled Map File) μ νμΌλ§΅ νΈμ§κΈ°λ‘ λμ΄λ€ λμΌλ©΄ νμ¬ μ νν νμΌλ§΅ λ²νΈμ ν΄λΉνλ λλ©΄ μμλλ‘ ν΄λΉ λ μ΄μ΄λ₯Ό λ‘λν μ μμ΅λλ€.
μ¬μ΄λ νΈμ§κΈ°
μ¬μ΄λλ₯Ό νΈμ§νλ νλ©΄μ λλ€.
μμ νΈμ§κΈ°
μ¬μ΄λλ₯Ό νλ μ΄ μμλλ‘ λμ΄λμ μμ μ νΈμ§νλ νλ©΄μ λλ€.
Pyxelμ μ΄λ―Έμ§μ νμΌ λ§΅μ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λ§λ€ μλ μμ΅λλ€.
Image.set
λλTilemap.set
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ λ¦¬μ€νΈμμ μ΄λ―Έμ§ μμ±Image.load
ν¨μλ₯Ό μ¬μ©νμ¬ Pyxel νλ νΈ μ΄λ―Έμ§ νμΌ (PNG/GIF/JPEG) λΆλ¬μ€κΈ°
Pyxelμ μ¬μ΄λμ μμ λ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λ§λ€ μ μμ΅λλ€.
Sound.set
λλMusic.set
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μμ μ¬μ΄λ μμ±
κ° ν¨μμ μ¬μ©λ²μ API λ νΌλ°μ€λ₯Ό μ°Έμ‘°ν΄μ£ΌμΈμ.
Pyxelμ μ¬λ¬ νλ«νΌμμ μλνλ μ μ© μ ν리μΌμ΄μ λ°°ν¬ νμΌ νμ (Pyxel μ ν리μΌμ΄μ νμΌ) μ μ§μν©λλ€.
pyxel package
λͺ
λ ΉμΌλ‘ Pyxel μ ν리μΌμ΄μ
νμΌ(.pyxapp)μ μμ±ν©λλ€:
pyxel package APP_DIR STARTUP_SCRIPT_FILE
μμ© νλ‘κ·Έλ¨μ 리μμ€ λλ μΆκ° λͺ¨λμ΄ ν¬ν¨λμ΄μΌ νλ κ²½μ° μμ© νλ‘κ·Έλ¨ λλ ν°λ¦¬μ λ°°μΉν©λλ€.
μμ±λ μ ν리μΌμ΄μ
νμΌμ pyxel play
λͺ
λ Ήμ΄λ‘ μ€νν μ μμ΅λλ€:
pyxel play PYXEL_APP_FILE
Pyxel μμ© νλ‘κ·Έλ¨ νμΌμ pyxel app2exe
λλ pyxel app2html
λͺ
λ Ήμ μ¬μ©νμ¬ μ€ν νμΌ λλ HTML νμΌλ‘ λ³νν μλ μμ΅λλ€.
-
width
,height
νλ©΄μ κ°λ‘/μΈλ‘ ν¬κΈ° -
frame_count
κ²½κ³Όν νλ μμ μ -
init(width, height, [title], [fps], [quit_key], [display_scale], [capture_scale], [capture_sec])
Pyxel μ ν리μΌμ΄μ μ νλ©΄ ν¬κΈ° (width
,height
) λ‘ μ΄κΈ°νν©λλ€. μ΅μ μΌλ‘title
μ μ°½ μ λͺ©,fps
μ νλ μ μλ,quit_key
μ μ ν리μΌμ΄μ μ’ λ£ ν€,display_scale
μ μ¬μ©ν λμ€νλ μ΄ ν¬κΈ°,capture_scale
μ νλ©΄ μΊ‘μ²μ λ°°μ¨,capture_sec
μ νλ©΄ μΊ‘μ²μ μ΅λ λ Ήν μκ°μ μ§μ ν μ μμ΅λλ€.
μμ:pyxel.init(160, 120, title="My Pyxel App", fps=60, quit_key=pyxel.KEY_NONE, capture_scale=3, capture_sec=0)
-
run(update, draw)
Pyxel μ ν리μΌμ΄μ μ μ€ννλ©°, νλ μ κ°±μ μupdate
ν¨μλ₯Ό, νλ©΄ 그리기μdraw
ν¨μλ₯Ό νΈμΆν©λλ€. -
show()
νλ©΄μ νμνκ³Esc
ν€λ₯Ό λλ₯Ό λκΉμ§ κΈ°λ€λ¦½λλ€. -
flip()
νλ©΄μ ν νλ μμ© μλ‘ κ³ μΉ©λλ€.Esc
ν€λ₯Ό λλ₯΄λ©΄ μ ν리μΌμ΄μ μ΄ μ’ λ£λ©λλ€. μ΄ κΈ°λ₯μ μΉ λ²μ μμλ μλνμ§ μμ΅λλ€. -
quit()
Pyxel μ ν리μΌμ΄μ μ μ’ λ£ν©λλ€.
load(filename, [excl_images], [excl_tilemaps], [excl_sounds], [excl_musics])
리μμ€ νμΌ (.pyxres) μ λΆλ¬μ΅λλ€. μ΅μ μ΄True
μ΄λ©΄ 리μμ€κ° λ‘λλμ§ μμ΅λλ€. 리μμ€ νμΌκ³Ό κ°μ μμΉμ κ°μ μ΄λ¦μ νλ νΈ νμΌ (.pyxpal) μ΄ μλ κ²½μ° νλ νΈ νμ μμλ λ³κ²½λ©λλ€. μμν νμΌμ νμ μμμ 16μ§μ νλͺ© (μ:1100FF
) μ κ°νμΌλ‘ ꡬλΆν κ²μ λλ€. νλ νΈ νμΌμ νμ΄μ νΈμ§κΈ°μμ νμλλ μμμ λ³κ²½νλ λ°μλ μ¬μ©ν μ μμ΅λλ€.
-
mouse_x
,mouse_y
λ§μ°μ€ 컀μμ νμ¬ μ’νλ₯Ό λνλ λλ€. -
mouse_wheel
λ§μ°μ€ ν μ νμ¬ κ°μ λνλ λλ€. -
btn(key)
key
κ° λλ¦¬κ³ μμΌλ©΄True
, λλ¦¬κ³ μμ§ μμΌλ©΄False
λ₯Ό λ°νν©λλ€. (ν€ μ μ 리μ€νΈ) -
btnp(key, [hold], [repeat])
ν΄λΉ νλ μμkey
κ° λ리면True
, λλ¦¬μ§ μμΌλ©΄False
λ₯Ό λ°νν©λλ€.hold
μrepeat
λ₯Ό μ§μ νλ©΄,hold
νλ μ μ΄μkey
κ° λλ¦° μνμΈ κ²½μ°repeat
νλ μ κ°κ²©μΌλ‘True
λ₯Ό λ°νν©λλ€. -
btnr(key)
ν΄λΉ νλ μμkey
κ° λΌμ΄μ§λ©΄True
, μλλ©΄False
λ₯Ό λ°νν©λλ€. -
mouse(visible)
visible
μ΄True
μΈ κ²½μ° λ§μ°μ€ 컀μλ₯Ό νμνκ³ ,False
λΌλ©΄ νμνμ§ μμ΅λλ€. λ§μ°μ€ 컀μκ° λ³΄μ΄μ§ μμλ λ§μ°μ€ 컀μμ μ’νλ κ°±μ λ©λλ€.
-
colors
νλ νΈμ νμ μμ 리μ€νΈμ λλ€. νμ μμμ 24-bit μ«μ κ°μΌλ‘ μ§μ ν©λλ€.colors.from_list
λ°colors.to_list
λ₯Ό μ¬μ©ν΄ Python 리μ€νΈμ ννλ‘ μ§μ μμμ μ§μ νκ³ μ μ©ν μ μμ΅λλ€.
μμ:old_colors = pyxel.colors.to_list(); pyxel.colors.from_list([0x111111, 0x222222, 0x333333]); pyxel.colors[15] = 0x112233
-
images
μ΄λ―Έμ§ λ± ν¬ λͺ©λ‘ (0-2). (μ΄λ―Έμ§ ν΄λμ€ μ°Έμ‘°)
μμ:pyxel.images[0].load(0, 0, "title.png")
-
tilemaps
νμΌλ§΅ λͺ©λ‘ (0-7). (νμΌ λ§΅ ν΄λμ€ μ°Έμ‘°) -
clip(x, y, w, h)
νλ©΄μ λλ‘μ μμμ (x
,y
) λ‘ μ€μ νκ³ , λλΉλ₯Όw
, λμ΄λ₯Όh
λ‘ μ€μ ν©λλ€.clip()
κ³Ό κ°μ΄ μ¬μ©νλ©΄ λλ‘μ μμμ μ΄κΈ° μν (μ 체 νλ©΄) μΌλ‘ λ립λλ€. -
camera(x, y)
νλ©΄μ μ’μΈ‘ μλ¨ μ’νλ₯Ό (x
,y
) λ‘ λ³κ²½ν©λλ€.camera()
λ‘ μ’νλ₯Ό (0
,0
) μΌλ‘ μ΄κΈ°νν μ μμ΅λλ€. -
pal(col1, col2)
λλ‘μ μcol1
λ₯Όcol2
λ‘ λ체ν©λλ€.pal()
κ³Ό κ°μ΄ μ¬μ©νλ©΄ μ΄κΈ° μνλ‘ λ립λλ€. -
dither(alpha)
그리기 μ λλλ§ (μμ¬ ν¬λͺ λ) μ μ μ©ν©λλ€. 0.0-1.0 λ²μμμμν
λ₯Ό μ€μ ν©λλ€ (0.0μ ν¬λͺ , 1.0μ λΆν¬λͺ ). -
cls(col)
νλ©΄μcol
μμΌλ‘ μ§μλλ€. -
pget(x, y)
(x
,y
) μ’νμ μμ κ°μ κ°μ Έμ΅λλ€. -
pset(x, y, col)
col
μμ μ¬μ©ν΄ (x
,y
) μ’νμ ν½μ μ 그립λλ€. -
line(x1, y1, x2, y2, col)
col
μμ μ¬μ©ν΄ (x1
,y1
) λΆν° (x2
,y2
) κΉμ§ μ§μ μ 그립λλ€. -
rect(x, y, w, h, col)
κ°λ‘w
, μΈλ‘h
μ ν¬κΈ°λ‘col
μμ μ¬μ©ν΄ μ§μ¬κ°νμ (x
,y
) μ’νμ 그립λλ€. -
rectb(x, y, w, h, col)
κ°λ‘w
, μΈλ‘h
μ ν¬κΈ°λ‘col
μμ μ¬μ©ν΄ μ§μ¬κ°ν ν λ리λ₯Ό (x
,y
) μ’νμ 그립λλ€. (ν λ리 μμͺ½μ μμμ μ±μ°μ§ μμ) -
circ(x, y, r, col)
λ°κ²½r
,col
μμ μμ (x
,y
) μ’νμ 그립λλ€. -
circb(x, y, r, col)
λ°κ²½r
,col
μμ μ ν λ리λ₯Ό (x
,y
) μ’νμ 그립λλ€. (ν λ리 μμͺ½μ μμμ μ±μ°μ§ μμ) -
elli(x, y, w, h, col)
(x
,y
) μμ λλΉw
, λμ΄h
λ° μμcol
μ νμμ 그립λλ€. -
ellib(x, y, w, h, col)
(x
,y
) μμ λλΉw
, λμ΄h
λ° μμcol
μ νμ μ€κ³½μ μ 그립λλ€. -
tri(x1, y1, x2, y2, x3, y3, col)
κΌμ§μ μ’ν (x1
,y1
), (x2
,y2
), (x3
,y3
) λ₯Ό κΈ°μ€μΌλ‘col
μμμ μΌκ°νμ 그립λλ€. -
trib(x1, y1, x2, y2, x3, y3, col)
κΌμ§μ μ’ν (x1
,y1
), (x2
,y2
), (x3
,y3
) λ₯Ό κΈ°μ€μΌλ‘col
μμμ μΌκ°ν ν λ리λ₯Ό 그립λλ€. (ν λ리 μμͺ½μ μμμ μ±μ°μ§ μμ) -
fill(x, y, col)
(x
,y
) μμ λλΉw
, λμ΄h
λ° μμcol
μ μ€μνλ₯Ό 그립λλ€. -
blt(x, y, img, u, v, w, h, [colkey], [rotate], [scale])
μ΄λ―Έμ§ λ± ν¬img
(0-2) μ (u
,v
) λ‘λΆν° ν¬κΈ° (w
,h
) κΉμ§μ μμμ (x
,y
) μ’νμ 볡μ¬ν©λλ€.w
,h
μ κ°μ μμλ‘ μ€μ νλ©΄, κ°κ° μν, μμ§ λ°©ν₯μΌλ‘ λ°μ λ©λλ€.colkey
λ‘ μμ μ§μ νλ©΄ ν¬λͺ μμμΌλ‘ μ²λ¦¬λ©λλ€.rotate
(λ λ¨μ),scale
(1.0=100%) λλ λ λ€λ₯Ό μ§μ νλ©΄ ν΄λΉ λ³νμ΄ μ μ©λ©λλ€.
bltm(x, y, tm, u, v, w, h, [colkey], [rotate], [scale])
νμΌ λ§΅tm
(0-7) μ (u
,v
) λ‘λΆν° ν¬κΈ° (w
,h
) κΉμ§μ μμμ (x
,y
) μ’νμ 볡μ¬ν©λλ€.w
,h
μ κ°μ μμλ‘ μ€μ νλ©΄, κ°κ° μν, μμ§ λ°©ν₯μΌλ‘ λ°μ λ©λλ€.colkey
λ‘ μμ μ§μ νλ©΄ ν¬λͺ μμμΌλ‘ μ²λ¦¬λ©λλ€.rotate
(λ λ¨μ),scale
(1.0=100%) λλ λ λ€λ₯Ό μ§μ νλ©΄ ν΄λΉ λ³νμ΄ μ μ©λ©λλ€. νμΌ νλμ ν¬κΈ°λ 8x8 ν½μ μ΄λ©°(tile_x, tile_y)
μ ννλ‘ νμΌ λ§΅μ μ μ₯λμ΄ μμ΅λλ€.
text(x, y, s, col)
col
μμ μ¬μ©ν΄ λ¬Έμμ΄s
λ₯Ό (x
,y
) μ’νμ 그립λλ€.
-
sounds
μ리 λͺ©λ‘ (0-63). (μ¬μ΄λ ν΄λμ€ μ°Έμ‘°)
μμ:pyxel.sounds[0].speed = 60
-
musics
μμ λͺ©λ‘ (0-7). (μμ ν΄λμ€ μ°Έμ‘°) -
play(ch, snd, [tick], [loop], [resume])
μ±λch
(0-3) μμ μ¬μ΄λsnd
(0-63) λ₯Ό μ¬μν©λλ€.snd
κ° λ¦¬μ€νΈμΌ κ²½μ°, μμλλ‘ μ¬μλ©λλ€. μ¬μ μμ μμΉλtick
(1 tick = 1/120μ΄) μΌλ‘ μ§μ ν μ μμ΅λλ€.loop
μTrue
λ₯Ό μ§μ νλ©΄ κ³μ λ°λ³΅ν©λλ€. μ¬μμ΄ λλ ν μ΄μ μ리λ₯Ό λ€μ μ¬μνλ €λ©΄resume
μTrue
λ‘ μ€μ νμΈμ. -
playm(msc, [tick], [loop])
μμmsc
(0-7) μ μ¬μν©λλ€. μ¬μ μμ μμΉλtick
(1 tick = 1/120μ΄) μΌλ‘ μ§μ ν μ μμ΅λλ€.loop
μTrue
λ₯Ό μ§μ νλ©΄ κ³μ λ°λ³΅ν©λλ€. -
stop([ch])
μ§μ λ μ±λch
(0-3) μ μ¬μμ μ€μ§ν©λλ€.stop()
μ μ¬μ©ν΄ λͺ¨λ μ±λμ μ¬μμ μ€μ§ν μλ μμ΅λλ€. -
play_pos(ch)
μ±λch
(0-3) μ μ¬μ΄λ μ¬μ μμΉλ₯Ό(sound no, note no)
ννμ ννλ‘ κ°μ Έμ΅λλ€. μ¬μ μ€μ΄ μλ κ²½μ°None
μ λ°νν©λλ€.
-
ceil(x)
x
λ³΄λ€ ν¬κ±°λ κ°μ κ°μ₯ μμ μ μλ₯Ό λ°νν©λλ€. -
floor(x)
x
λ³΄λ€ μκ±°λ κ°μ κ°μ₯ ν° μ μλ₯Ό λ°νν©λλ€. -
sgn(x)
xκ° μμμ΄λ©΄ 1, 0μ΄λ©΄ 0, μμμ΄λ©΄ -1μ λ°νν©λλ€. -
sqrt(x)
x
μ μ κ³±κ·Όμ λ°νν©λλ€. -
sin(deg)
deg
κ°λμ μ¬μΈμ λ°νν©λλ€. -
cos(deg)
deg
κ°λμ μ½μ¬μΈμ λ°νν©λλ€. -
atan2(y, x)
y
/x
μ μν¬νμ νΈλ₯Ό λ λ¨μλ‘ λ°νν©λλ€. -
rseed(seed)
λμ μμ±κΈ°μ μλλ₯Ό μ€μ ν©λλ€. -
rndi(a, b)
a
λ³΄λ€ ν¬κ±°λ κ°κ³b
λ³΄λ€ μκ±°λ κ°μ μμμ μ μλ₯Ό λ°νν©λλ€. -
rndf(a, b)
a
λ³΄λ€ ν¬κ±°λ κ°κ³b
λ³΄λ€ μκ±°λ κ°μ μμμ μμλ₯Ό λ°νν©λλ€. -
nseed(seed)
Perlin λ Έμ΄μ¦μ μλλ₯Ό μ€μ ν©λλ€. -
noise(x, [y], [z])
μ§μ λ μ’νμ λν Perlin λ Έμ΄μ¦ κ°μ λ°νν©λλ€.
-
width
,height
μ΄λ―Έμ§μ κ°λ‘, μΈλ‘ ν¬κΈ° -
set(x, y, data)
(x
,y
) μ λ¬Έμμ΄ λ¦¬μ€νΈλ₯Ό μ¬μ©ν΄ μ΄λ―Έμ§λ₯Ό μ€μ ν©λλ€.
μμ:pyxel.images[0].set(10, 10, ["0123", "4567", "89ab", "cdef"])
-
load(x, y, filename)
(x
,y
) μ μ΄λ―Έμ§ νμΌ (PNG/GIF/JPEG) μ λΆλ¬μ΅λλ€. -
pget(x, y)
(x
,y
) μμ ν½μ μμμ κ°μ Έμ΅λλ€. -
pset(x, y, col)
(x
,y
) μ μμcol
μ ν½μ μ 그립λλ€.
-
width
,height
νμΌ λ§΅μ κ°λ‘/μΈλ‘ ν¬κΈ° -
imgsrc
νμΌ λ§΅μ΄ μ°Έμ‘°νλ μ΄λ―Έμ§ λ± ν¬ (0-2) -
set(x, y, data)
(x
,y
) μ λ¬Έμμ΄ λ¦¬μ€νΈλ₯Ό μ¬μ©ν΄ νμΌ λ§΅μ μ€μ ν©λλ€.
μμ:pyxel.tilemap(0).set(0, 0, ["0000 0100 a0b0", "0001 0101 a1b1"])
-
load(x, y, filename, layer)
TMX νμΌ (Tiled Map File) μμ (x
,y
) μ λλ©΄ μμlayer
(0-) λ‘ λ μ΄μ΄λ₯Ό λ‘λν©λλ€. -
pget(x, y)
(x
,y
) μμ νμΌμ κ°μ Έμ΅λλ€. νμΌμ(tile_x, tile_y)
μ νν ννμ λλ€. -
pset(x, y, tile)
(x
,y
) μtile
μ 그립λλ€. νμΌμ(tile_x, tile_y)
μ νν ννμ λλ€.
-
notes
μμ 리μ€νΈ (0-127). μ«μκ° λμμλ‘ νΌμΉκ° λμμ§λ©° 33μμλ 'A2'(440Hz) κ° λ©λλ€. μΌνλ -1μ λλ€. -
tones
μμ 리μ€νΈ (0:Triangle / 1:Square / 2:Pulse / 3:Noise) -
volumes
μλ 리μ€νΈ (0-7) -
effects
ν¨κ³Ό 리μ€νΈ (0:None / 1:Slide / 2:Vibrato / 3:FadeOut / 4:Half-FadeOut / 5:Quarter-FadeOut) -
speed
μ¬μ μλ. 1μ΄ κ°μ₯ λΉ λ₯΄λ©° μ«μκ° μ»€μ§μλ‘ μ¬μ μλκ° λλ €μ§λλ€. 120μμλ ν μμ κΈΈμ΄κ° 1μ΄κ° λ©λλ€. -
set(notes, tones, volumes, effects, speed)
λ¬Έμμ΄μ μ¬μ©ν΄ μμ , μμ, μλ λ° ν¨κ³Όλ₯Ό μ€μ ν©λλ€. μμ, μλ, ν¨κ³Όμ κΈΈμ΄κ° μμ λ³΄λ€ μ§§μΌλ©΄ μ²μλΆν° λ°λ³΅λ©λλ€. -
set_notes(notes)
'CDEFGAB'+'#-'+'01234' λλ 'R' λ¬Έμμ΄λ‘ μμ μ μ€μ ν©λλ€. λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμΌλ©° λΉμΉΈμ 무μλ©λλ€.
μμ:pyxel.sounds[0].set_notes("G2B-2D3R RF3F3F3")
-
set_tones(tones)
'TSPN' λ¬Έμμ΄λ‘ μμμ μ€μ ν©λλ€. λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμΌλ©° λΉμΉΈμ 무μλ©λλ€.
μμ:pyxel.sounds[0].set_tones("TTSS PPPN")
-
set_volumes(volumes)
'01234567' λ¬Έμμ΄λ‘ μλμ μ€μ ν©λλ€. λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμΌλ©° λΉμΉΈμ 무μλ©λλ€.
μμ:pyxel.sounds[0].set_volumes("7777 7531")
-
set_effects(effects)
'NSVFHQ' λ¬Έμμ΄λ‘ ν¨κ³Όλ₯Ό μ€μ ν©λλ€. λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμΌλ©° λΉμΉΈμ 무μλ©λλ€.
μμ:pyxel.sounds[0].set_effects("NFNF NVVS")
-
seqs
μ±λ μκ° ν¬ν¨λ 2μ°¨μ μ¬μ΄λ λͺ©λ‘ (0-63) -
set(seq0, seq1, seq2, ...)
μ±λμ μ¬μ΄λ λͺ©λ‘ (0-63) μ μ€μ ν©λλ€. λΉ λ¦¬μ€νΈκ° μ§μ λλ©΄ ν΄λΉ μ±λμ μ¬μμ μ¬μ©λμ§ μμ΅λλ€.
μμ:pyxel.musics[0].set([0, 1], [], [3])
Pyxelμλ "μ¬μ©μλ₯Ό νΌλμ€λ½κ² ν μ μκ±°λ", "μ¬μ©νλ λ° μ λ¬Έ μ§μμ΄ νμν¨"μ μ΄μ λ‘ μ¬κΈ°μ μΈκΈλμ§ μμ "κ³ κΈ μ¬μ©μμ© API"κ° μ‘΄μ¬ν©λλ€.
μ΄λ¬ν κ²μ λ€λ£¨λ λ° λ₯μνμλ€λ©΄, μ¬κΈ° λ₯Ό μ°Έκ³ ν΄ κΉμ§ λλ λ§ν μν λ§λ€κΈ°μ λμ ν΄λ³΄μΈμ!
μ€λ₯ μ 보λ κΈ°λ₯ 건μλ μ΄μ νΈλ컀 μμ λ°κ³ μμ΅λλ€. μ μ΄μλ₯Ό μμ±νκΈ° μ μ λΉμ·ν λ΄μ©μ μ΄μκ° μλμ§ νμΈ λΆνλ립λλ€.
μ½λλ₯Ό ν μ€νΈν΄ μ£Όμκ³ , μ΄μ νΈλ컀 νμ΄μ§μμ μ€λ₯ μ 보λ κ°μ μ μμ ν΄μ£Όμλ λΆλ€μ νμν©λλ€!
ν¨μΉλ μμ μμ²μ ν 리νμ€νΈ (PR) λ‘ λ°κ³ μμ΅λλ€. μ μΆνκΈ° μ μ λ¬Έμ κ° μ΄λ―Έ ν΄κ²°λμ§ μμλμ§ μ΄μ νΈλ컀 νμ΄μ§μμ νμΈ λΆνλ립λλ€.
μ μΆν ν 리νμ€νΈλ MIT λΌμ΄μ μ€ μ λ°λΌ κ²μνλ λ° λμν κ²μΌλ‘ κ°μ£Όν©λλ€.
Pyxelμ MIT λΌμ΄μ μ€ λ₯Ό λ°λ¦ λλ€. μννΈμ¨μ΄μ λͺ¨λ μ¬λ³Έ λλ κ·Έ μλΉ λΆλΆμ MIT λΌμ΄μ μ€ μ‘°νμ μ¬λ³Έ λ° μ μκΆ ν΅μ§κ° ν¬ν¨λμ΄ μλ€λ©΄ λ μ μννΈμ¨μ΄ λ΄μμ μ¬μ¬μ©ν μ μμ΅λλ€.
Pyxelμ GitHub Sponsorsμμ μ€ν°μλ₯Ό λͺ¨μ§νκ³ μμ΅λλ€. Pyxelμ μ μ§ λ³΄μ λ° κΈ°λ₯ μΆκ°λ₯Ό μν΄ μ€ν°μκ° λλ κ²μ κ³ λ €ν΄λ³΄μΈμ. μ€ν°μκ° λλ©΄ ννμΌλ‘ Pyxelμ λν μλ΄μ λ°μ μ μμ΅λλ€. μμΈν λ΄μ©μ μ¬κΈ° λ₯Ό μ°Έμ‘°νμΈμ.