
ãpyxel 1.5ãPyxel Editoräœ¿çšæ¹æ³ãŸãšã
pythonã®ã¬ããã²ãŒã ãšã³ãžã³ãpyxelã ã«ä»éããPyxel Editorã®äœ¿ãæ¹ãŸãšãã§ããããŒãžã§ã³1.5.0ãã倧ãã倿Žãããç¹ãããã®ã§ããã®ãããã«éç¹ã眮ããŠæžããŠãããããšæããŸãã
Pyxel Editorã§ã¯ã€ã¡ãŒãžã»ã¿ã€ã«ãããã»ãµãŠã³ããšã²ãŒã ã«å¿
èŠãªãªãœãŒã¹ããŸãšããŠäœãããšãã§ããŸããåã®ãããªåå¿è
ã«ã¯ãããããšããã§ãã
ãµãŠã³ããšãã£ã¿ãŒã¯ããŸã䜿ããŠããªãã®ã§ããã®noteã§ã¯ã€ã¡ãŒãžãšã¿ã€ã«ããããåãäžããŸãã
â»Ver1.5.0ã§ã¯Pyxel Editorã®åº§æšé¢é£ã®äžå ·åãå ±åãããŠããŸãããVer1.5.1ã§ä¿®æ£ãããŠããã®ã§ãPyxel Editor䜿çšåã«pyxelæ¬äœã®ããŒãžã§ã³ç¢ºèªãããããããŸãã
æ§ããŒãžã§ã³ïŒVer.1.4以åïŒã«ã€ããŠã¯ä»¥äžã®noteã«èšèŒããŠãããŸãã
䜿çšç°å¢
Windows 11ãïŒãAnaconda
ãšãã£ã¿ãŒã¯Anacondaã«ã€ããŠããSpyderã䜿ã£ãŠããŸãã
pyxelã®å®è¡ç°å¢æ§ç¯ã«ã€ããŠã¯ä»¥äžã®noteããåç
§ãã ããã
èµ·åæ¹æ³
Anacondaç°å¢ã§ã¯ã¿ãŒããã«ããèµ·åããŸããAnaconda Navigaterã®å·Šã®ã¿ããããEnviromentsããã¯ãªãã¯ãpyxelãåãããç°å¢ã®â¶ãã¿ã³ãã¯ãªãã¯ããOpenãTerminalããã¯ãªãã¯ãé»ãèæ¯ã®ã¿ãŒããã«ãèµ·åããŸãããpyxel editã"ä¿åãããã¡ã€ã«ãã¹"ãã§èµ·åã§ãã
pyxel edit C:\python\pyxel\sampleâ²Cã®äžã«ãããpythonããšãããã©ã«ãã®äžã®ãpyxelããã©ã«ãã«ãsampleããšããååã§äœæããå Žåã¯ãããªæãã
äœæãããã¡ã€ã«ã®æ¡åŒµåã¯ã.pyxresãã§ãããèµ·åã³ãã³ãã«ã¯äžèŠã§ãã

â²Pyxel Editorãèµ·åã§ããŸãããå·Šäžã®ãã¡ã€ã«ãã¹ãæå®ãããã®ã«ãªã£ãŠããŸãã
ãããçµµãäœã
ãŸãã¯ãããçµµãäœã£ãŠã¿ãŸãã
ãããçµµãæã

â²ã€ã¡ãŒãžç·šéç»é¢ã§ãããã£ãããšèª¬æããŠãããŸãã
â ïŒç·šé察象ã®åãæ¿ããã¿ã³ã§ããå·Šãããã€ã¡ãŒãžã»ã¿ã€ã«ãããã»ãµãŠã³ãã»ãã¥ãŒãžãã¯ãã®é ã§ãã
âïŒããã©ãã»é²ããããã¿ã³ã§ãã
â¢ïŒãä¿åããã¿ã³ã§ãã
â£ïŒãçŸåšã®ã«ãŒãœã«ã®åº§æšãã衚瀺ãããŠããŸãã
â€ïŒã¡ã€ã³ã®ç·šéãŠã£ã³ããŠã§ããå·Šã¯ãªãã¯ã§ããããæã€ããšãã§ããŸããå³ã¯ãªãã¯ã§éžæåæã®è²ãååŸãå³ã¯ãªãã¯ãããŸãŸããŠã¹ç§»åã§ã¹ã¯ããŒã«ã
â¥ïŒã€ã¡ãŒãžãã³ã¯å
šäœã®è¡šç€ºã§ããçœæ éšåãå·Šã®ç·šéãŠã£ã³ããŠã«åã£ãŠããéšåã§ãã
âŠïŒãã¬ããéšåã§ããè²ããã©ã·ã®åœ¢ã»æ©èœãéžæããŸãã
â§ïŒã€ã¡ãŒãžãã³ã¯åãæ¿ãéšåãã0ã»1ã»2ãã®3ã€ãããããããã§ã€ã¡ãŒãžãäœæã§ããŸãããã£ã©ã¯ã¿ãŒè¡šç€ºçšãšãã¿ã€ã«ãããçšãšããçšéå¥ã§åãããšããããããããã

â²çœç«ãšè¶ç«ãæããŸããããããå®éã«è¡šç€ºãããŠã¿ãŸãã
ãããçµµã䜿ã
# -*- coding: utf-8 -*-
import pyxel
class APP:
def __init__(self):
pyxel.init(128, 128, title="pyxel")
pyxel.load('sample.pyxres')
pyxel.run(self.update, self.draw)
def update(self):
pass
def draw(self):
pyxel.cls(0)
pyxel.blt(50, 50, 0, 0, 0, 8, 8, 0)
pyxel.blt(65, 65, 0, 8, 8, 8, 8, 0)
APP()
â²çãã³ãŒãã§ããããã§ç»å衚瀺ãã§ããŸãã
ãŸãpyxel.loadã§å
ã»ã©äœã£ãã€ã¡ãŒãžãã¡ã€ã«ãèªã¿èŸŒã¿ãŸããä»åã¯æ¬äœã®.pyãã¡ã€ã«ãšåãéå±€ã«ã€ã¡ãŒãžãã¡ã€ã«ã眮ããŠããŸãã
ãã®åŸãdrawéšåã§ã€ã¡ãŒãžã®æç»ã§ããpyxel.bltã䜿ããŸãã
blt(x, y, img, u, v, w, h, [colkey])ãæžåŒã§ãã
äŸãã°ã
pyxel.blt(50, 50, 0, 0, 0, 8, 8, 0)
ã¯æ¥æ¬èªã«ãããš
ç»é¢ã®ïŒ50ïŒ50ïŒã®äœçœ®ã«ã€ã¡ãŒãžãã³ã¯ã0ãã®ïŒ0ïŒ0ïŒã®äœçœ®ããæšª8ã瞊8ã®ç¯å²ãæç»ããã«ã©ãŒã³ãŒãã0ãïŒé»ïŒã¯ééãããã
ãšããæå³ã«ãªããŸããæåŸã®ééã«ã©ãŒã³ãŒãã¯çç¥ããŠãOKã§ãã

â²è¡šç€ºã§ããŸãããçµæ§ããããæ°ãããŠããã
ã¿ã€ã«ããããäœã
ããŠãçœç«ãšè¶ç«ã衚瀺ããŠã¿ãŸããããèæ¯ããããŸããªã®ã§ã¿ã€ã«ããããäœã£ãŠã¿ãŸãã
ã¿ã€ã«ããããæã
ã¿ã€ã«ãããã¯ã€ã¡ãŒãžã®éåäœã§ãããªã®ã§ããŸãã¯ã¿ã€ã«ã«ããã€ã¡ãŒãžãæããŸãã

â²å²©ãããã¯ãåãããã¯ãèåãæããŸããããã¡ããã¡ãã«ãªããªãããã«ãã€ã¡ãŒãžãã³ã¯ã¯ã1ãã«åãæ¿ããŠããŸãã

â²ã¿ã€ã«ãããç·šéç»é¢ã§ããäžéšã®ããŒã«ããŒã¯ã€ã¡ãŒãžç·šéç»é¢ãšè¢«ãã®ã§å²æããŸãã
â ïŒã¿ã€ã«ãããç·šéãŠã£ã³ããŠã§ãã
âïŒéžæããŠããã¿ã€ã«ãããã®äžã§ã©ã®éšåãç·šéãŠã£ã³ããŠã«è¡šç€ºãããŠããããããããŸãã
â¢ïŒéžæããŠããã€ã¡ãŒãžãã³ã¯ã®äžèº«ã§ãã
â£ïŒã¿ã€ã«ãããã®åãæ¿ããªã©ãè¡ããŸãã
â€ïŒäœ¿çšããã€ã¡ãŒãžãã³ã¯ãåãæ¿ããŸããã€ã¡ãŒãžãã³ã¯ã¯ïŒã€ããéžã¹ãªãç¹ã¯æ³šæã§ããïŒäŸãã°ã€ã¡ãŒãžãã³ã¯0ãããã®ã¿ã€ã«ãã€ã¡ãŒãžãã³ã¯1ãããã®ã¿ã€ã«ãšãã¯ã§ããªããïŒ
ã¿ã€ã«ãããã䜿ã
# -*- coding: utf-8 -*-
import pyxel
class APP:
def __init__(self):
pyxel.init(128, 128, title="pyxel")
pyxel.load('sample.pyxres')
pyxel.run(self.update, self.draw)
def update(self):
pass
def draw(self):
pyxel.cls(0)
pyxel.bltm(0, 0, 0, 0, 0, 128, 128)
pyxel.blt(50, 50, 0, 0, 0, 8, 8, 0)
pyxel.blt(65, 65, 0, 8, 8, 8, 8, 0)
APP()
â²å
ã»ã©ã®ã³ãŒãã«å°ã远å ããŠããŸãã
ã¿ã€ã«ãããè¡šç€ºã®æžåŒã¯bltm(x, y, tm, u, v, w, h, [colkey])ã§ããå
ã»ã©ã®ã€ã¡ãŒãžè¡šç€ºãšã»ãŒåãã§ãããã³ãŒãã®äžããé çªã«æç»ããã®ã§ãã¿ã€ã«ãããâã€ã¡ãŒãžã®é ã§æžããŠããŸãã
ä»åæžããã³ãŒãã¯
pyxel.bltm(0, 0, 0, 0, 0, 16, 16)ã§
æ¥æ¬èªã«ãããš
ç»é¢ã®ïŒ0ïŒ0ïŒã®äœçœ®ã«ã¿ã€ã«ããããã³ã¯ã0ãã®ïŒ0ïŒ0ïŒã®äœçœ®ããæšª128ã瞊128ã®ç¯å²ãæç»ããã
ãšããæå³ã«ãªããŸããééã«ã©ãŒã³ãŒãã¯å¿
èŠãªãã®ã§æžããŠããŸããã

â²ã¿ã€ã«ãããã®è¡šç€ºãã§ããŸãããèåã®äžã«ç«ãããŸãã
ããã§ã€ã¡ãŒãžãšã¿ã€ã«ãããã®äœè£œã»è¡šç€ºãã§ããŸããã
ä»åã¯ãããŸã§ã«ãªããŸããèªãã§ããã ãããããšãããããŸããã
ããŸã
# -*- coding: utf-8 -*-
import pyxel
class APP:
def __init__(self):
pyxel.init(128, 128, title="pyxel")
pyxel.load('sample.pyxres')
self.neko_pos = [48, 48]
self.neko_muki = 0
pyxel.run(self.update, self.draw)
def update(self):
tile_x = self.neko_pos[0] / 8
tile_y = self.neko_pos[1] / 8
if pyxel.btnp(pyxel.KEY_UP):
tile = pyxel.tilemap(0).pget(tile_x, tile_y - 1)
if tile == (0, 1):
self.neko_pos[1] = self.neko_pos[1] - 8
if pyxel.btnp(pyxel.KEY_DOWN):
tile = pyxel.tilemap(0).pget(tile_x, tile_y + 1)
if tile == (0, 1):
self.neko_pos[1] = self.neko_pos[1] + 8
if pyxel.btnp(pyxel.KEY_RIGHT):
tile = pyxel.tilemap(0).pget(tile_x + 1, tile_y)
if tile == (0, 1):
self.neko_pos[0] = self.neko_pos[0] + 8
self.neko_muki = 0
if pyxel.btnp(pyxel.KEY_LEFT):
tile = pyxel.tilemap(0).pget(tile_x - 1, tile_y)
if tile == (0, 1):
self.neko_pos[0] = self.neko_pos[0] - 8
self.neko_muki = 1
def draw(self):
pyxel.cls(0)
pyxel.bltm(0, 0, 0, 0, 0, 128, 128)
pyxel.blt(self.neko_pos[0], self.neko_pos[1], 0,
0 + self.neko_muki * 8, 0, 8, 8, 0)
pyxel.blt(65, 65, 0, 8, 8, 8, 8, 0)
APP()
â²å°ãã³ãŒãã远å ããŠçœç«ãåãããããã«ããŸãããç§»åå ã®ã¿ã€ã«ãèŠãŠãèåã®ã¿åããããã«ããŠããŸããã¿ã€ã«çš®é¡ã¯Ver1.5.0ããã¿ãã«åã«ãªã£ãããã§ãã(x, y)ã®é ãªã®ã§(0, 1)ã¯1è¡ç®ã®0åç®ãšããããšã«ãªããŸããä»åã§ã¯èã®ãã¹ã§ãããé çªã0ããå§ãŸãç¹ã¯æ³šæã

â²åãããšãããªæããè¶ç«ã«ã¯åœããå€å®ããªãã®ã§ããæããŠããŸããŸãã
Pyxel Editorã®äœ¿ãæ¹ã«ã€ããŠããã£ãããšã¿ãŠã¿ãŸãããå²ãšå°ãªãã³ãŒãã§ãåããã®ãäœããŸãããã¡ãã£ãšãããçµµæãããŒã«ãšããŠãè¯ããšæããŸããããããã§ãã
ãããŸã§èªãã§ããã ãããããšãããããŸããã