Skip to content

Instantly share code, notes, and snippets.

@vestige
Last active October 23, 2022 08:10
Show Gist options
  • Save vestige/e9435e5442e919b2fc4540b3d24609ce to your computer and use it in GitHub Desktop.
Save vestige/e9435e5442e919b2fc4540b3d24609ce to your computer and use it in GitHub Desktop.
import pyxel
class App:
def __init__(self):
pyxel.init(160, 120, title="hello")
pyxel.run(self.update, self.draw)
def update(self):
pass
def draw(self):
pyxel.cls(0)
if __name__ == "__main__":
App()
@kotaproj
Copy link

import pyxel

class App:
	def __init__(self):
		# pyxelの初期化
		pyxel.init(160, 120, title="グラフィック")
		
		# 各キャラクタの準備
		
		# pyxelの実行
		# (フレーム更新時、描画時に呼ぶ関数の登録)
		pyxel.run(self.update, self.draw)
			
	def update(self):
		"""フレーム更新時の処理"""
		
		# キー入力チェック
		# 各キャラクタの移動
		# 衝突判定
		pass
		
	def draw(self):
		"""描画処理"""

		# 画面クリア
		pyxel.cls(0)
		
		# 各キャラクタの描画処理
		for i in range(16):
			x = i * 10
			pyxel.text(x, 10, str(i), 7)
			#pyxel.pix(x, 20, i)  #⇒ Ver1.4にてpix命令はpset命令に変更
			pyxel.pset(x, 20, i)
			pyxel.line(x, 30, x+8, 40, i)
			pyxel.rect(x, 50, 10, 10, i)
			pyxel.circ(x+4, 80, 8, i)

if __name__ == "__main__":
	App()

@kotaproj
Copy link

import pyxel

class App:
	def __init__(self):
		# pyxelの初期化
		pyxel.init(160, 120, title="基本")
		
		# 各キャラクタの準備
		self.x = 80
		self.y = 60
		self.move_size = 3
		
		# pyxelの実行
		# (フレーム更新時、描画時に呼ぶ関数の登録)
		pyxel.run(self.update, self.draw)
			
	def update(self):
		"""フレーム更新時の処理"""
		
		# キー入力チェック
		if pyxel.btn(pyxel.KEY_LEFT):
			dx, dy = -1, 0
		elif pyxel.btn(pyxel.KEY_RIGHT):
			dx, dy = 1, 0
		elif pyxel.btn(pyxel.KEY_UP):
			dx, dy = 0, -1
		elif pyxel.btn(pyxel.KEY_DOWN):
			dx, dy = 0, 1
		else:
			return
			
		# 各キャラクタの移動
		self.x += dx * self.move_size
		self.y += dy * self.move_size
		
		# 衝突判定
		if self.x < 0:
			self.x = 0
		if self.x + 10 > pyxel.width:
			self.x = pyxel.width - 10
		if self.y < 0:
			self.y = 0
		if self.y + 10 > pyxel.height:
			self.y = pyxel.height - 10
		
	def draw(self):
		"""描画処理"""

		# 画面クリア
		pyxel.cls(0)
		
		# 各キャラクタの描画処理
		pyxel.rect(self.x, self.y, 10, 10, 14)

if __name__ == "__main__":
	App()

@kotaproj
Copy link

import pyxel
import random

class App:
	def __init__(self):
		# pyxelの初期化
		pyxel.init(160, 120, title="マウスから星の誕生")
		## マウスカーソルの表示
		pyxel.mouse(True)
		
		# 各キャラクタの準備
		self.star = []
		
		# pyxelの実行
		# (フレーム更新時、描画時に呼ぶ関数の登録)
		pyxel.run(self.update, self.draw)
			
	def update(self):
		"""フレーム更新時の処理"""
		
		# キー入力チェック
		# 各キャラクタの移動
		if len(self.star) < 100:
			# 現在の星の位置、星のスピード、色
			vx = vy = 0
			while vx == 0 and vy == 0:
				vx = random.randint(-3, 3)
				vy = random.randint(-3, 3)
			col = random.randint(0, 15)
			self.star.append(
				[
				pyxel.mouse_x,
				pyxel.mouse_y,
				vx,
				vy,
				col
				]
			)
				
		# 衝突判定
		for i in range(len(self.star)-1, -1, -1):
			x, y, vx, vy, col = self.star[i]
			x += vx
			y += vy
			if x < 0 or x >= pyxel.width or\
			   y < 0 or y >= pyxel.height:
				self.star.pop(i)
			else:
				self.star[i][0] = x
				self.star[i][1] = y
		
	def draw(self):
		"""描画処理"""

		# 画面クリア
		pyxel.cls(0)
		
		# 各キャラクタの描画処理
		for i in range(0, len(self.star)):
			x, y, vx, vy, col = self.star[i]
			# pyxel.pix(x, y, col)  # ⇒ Pyxel 1.4にて、pix命令はpset命令に変更
			pyxel.pset(x, y, col)

if __name__ == "__main__":
	App()

@kotaproj
Copy link

import pyxel

class App:
	def __init__(self):
		# pyxelの初期化
		pyxel.init(160, 120, title="パックマン")
		
		# 各キャラクタの準備
		## リソースファイルのキャラクタ読み込み
		pyxel.load("my_resource.pyxres")
		
		self.x, self.y = 80, 60
		self.move_size = 1
		self.dir = 1		# 1:左  2:右   3:上  4:下
		self.type = 0		# 0:口が小さい、 1:口が大きい
		
		# pyxelの実行
		# (フレーム更新時、描画時に呼ぶ関数の登録)
		pyxel.run(self.update, self.draw)
			
	def update(self):
		"""フレーム更新時の処理"""
		
		# キー入力チェック
		if pyxel.btn(pyxel.KEY_LEFT):
			dx, dy = -1, 0
			self.dir = 1
		elif pyxel.btn(pyxel.KEY_RIGHT):
			dx, dy = 1, 0
			self.dir = 2
		elif pyxel.btn(pyxel.KEY_UP):
			dx, dy = 0, -1
			self.dir = 3
		elif pyxel.btn(pyxel.KEY_DOWN):
			dx, dy = 0, 1
			self.dir = 4
		else:
			return
			
		if pyxel.frame_count % 2 == 0:
			self.type = 1 - self.type
			
		# 各キャラクタの移動
		self.x += dx * self.move_size
		self.y += dy * self.move_size
		
		# 衝突判定
		if self.x < 0:
			self.x = 0
		if self.x + 8 > pyxel.width:
			self.x = pyxel.width - 8
		if self.y < 0:
			self.y = 0
		if self.y + 8 > pyxel.height:
			self.y = pyxel.height - 8
		
	def draw(self):
		"""描画処理"""

		# 画面クリア
		pyxel.cls(0)
		
		# 各キャラクタの描画処理
		if self.dir == 1:
			pyxel.blt(self.x, self.y, 0, self.type * 8, 0, -8, 8)
		elif self.dir == 2:
			pyxel.blt(self.x, self.y, 0, self.type * 8, 0,  8, 8)
		elif self.dir == 3:
			pyxel.blt(self.x, self.y, 0, self.type * 8, 8,  8, -8)
		elif self.dir == 4:
			pyxel.blt(self.x, self.y, 0, self.type * 8, 8,  8, 8)

if __name__ == "__main__":
	App()

@kotaproj
Copy link

import pyxel


class App:
    def __init__(self):
        # pyxelの初期化
        pyxel.init(160, 120, title="パックマン")

        # 各キャラクタの準備
        # リソースファイルのキャラクタ読み込み
        pyxel.load("my_resource.pyxres")

        self.x, self.y = 80, 60
        self.move_size = 1
        self.dir = 1		# 1:左  2:右   3:上  4:下
        self.type = 0		# 0:口が小さい、 1:口が大きい

        # pyxelの実行
        # (フレーム更新時、描画時に呼ぶ関数の登録)
        pyxel.run(self.update, self.draw)

    def update(self):
        """フレーム更新時の処理"""

        # キー入力チェック
        if pyxel.btn(pyxel.KEY_LEFT):
            dx, dy = -1, 0
            self.dir = 1
        elif pyxel.btn(pyxel.KEY_RIGHT):
            dx, dy = 1, 0
            self.dir = 2
        elif pyxel.btn(pyxel.KEY_UP):
            dx, dy = 0, -1
            self.dir = 3
        elif pyxel.btn(pyxel.KEY_DOWN):
            dx, dy = 0, 1
            self.dir = 4
        else:
            return

        if pyxel.frame_count % 2 == 0:
            self.type = 1 - self.type

        # 各キャラクタの移動
        self.x += dx * self.move_size
        self.y += dy * self.move_size

        # 衝突判定
        if self.x < 0:
            self.x = 0
        if self.x + 8 > pyxel.width:
            self.x = pyxel.width - 8
        if self.y < 0:
            self.y = 0
        if self.y + 8 > pyxel.height:
            self.y = pyxel.height - 8

    def draw(self):
        """描画処理"""

        # 画面クリア
        pyxel.cls(0)

        # 各キャラクタの描画処理
        if self.dir == 1:
            pyxel.blt(self.x, self.y, 0, self.type * 8, 0, -8, 8)
        elif self.dir == 2:
            pyxel.blt(self.x, self.y, 0, self.type * 8, 0,  8, 8)
        elif self.dir == 3:
            pyxel.blt(self.x, self.y, 0, self.type * 8, 8,  8, -8)
        elif self.dir == 4:
            pyxel.blt(self.x, self.y, 0, self.type * 8, 8,  8, 8)


if __name__ == "__main__":
    App()

@vestige
Copy link
Author

vestige commented Oct 23, 2022

import pyxel
      
def sound_set():
   pyxel.sound(0).set(
      "C2D2E2R",
      "t",
      "7",
      "n",
      60,
   )

class App:
   def __init__(self):
      pyxel.init(160, 120, title="music")

      sound_set()
      pyxel.play(0, 0)
      pyxel.run(self.update, self.draw)
   
   def update(self):
      if pyxel.play_pos(0) is None:
         pyxel.quit()

   def draw(self):
      pyxel.cls(0)

if __name__ == "__main__":
   App()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment