8×8ドットの魚のデジタル時計

Python

魚の8×8ドットの絵をPythonのpyxel(pip install pyxel)に付属のpyxeleditorを使って書いて動かす。

こんな感じのドット絵風の腕時計が欲しいです。

fish.py

# -*- coding: utf-8 -*-
import pyxel
import random
from datetime import datetime

direction = True		# True -> False -> True ....
today = datetime.now()  # 現在時刻

class App:
	def __init__(self):
		# 魚
		self.x = 8
		self.y = 8
		self.speed = 1

		# 画面初期化
		width = 64
		height = 64

		pyxel.init(width, height, caption="dot_fish", scale=4, fps=15)
		pyxel.load("cat.pyxres")	# リソースファイルを読み込む

		# 実行
		pyxel.run(self.update, self.draw)

	def update(self):
		global direction, today

		# 現在時刻
		today = datetime.now()
		self.hour = today.hour
		self.minute = today.minute

		# 魚の動き
		if direction == True:
			self.x = self.x + self.speed  # 右に移動
		else:
			self.x = self.x - self.speed  # 左に移動
	
		if self.x < 0 or self.x >= pyxel.width:  # 端まで行ったら向きを変える
			self.y = random.randint(1, pyxel.height)
			direction = not(direction)

	def draw(self):
		# 画面をクリア
		pyxel.cls(1)

		# 時計の「:」をチカチカさせる
		if pyxel.frame_count % 15 == 0:
			mytime = "{} {}".format(self.hour, self.minute)
		else:
			mytime = "{}:{}".format(self.hour, self.minute)
		
		pyxel.text(23, 29, mytime, 0)	# 時刻描画

		# 魚表示
		img = 0		# イメージバンク 0~2で指定
		w = 8		# 切り出す幅
		h = 8		# 切り出す高さ
		colkey = 0	# 透明色扱いにする色

		rx = (pyxel.frame_count % 2) * 8 + 8		# イメージバンク切り出し位置のx座標
		ry = 0		# イメージバンク切り出し位置のy座標

		if direction == True:
			pyxel.blt(self.x, self.y, img, rx, ry, -w, h, colkey)		# 右向
		else:
			pyxel.blt(self.x, self.y, img, rx, ry, w, h, colkey)		# 左向

App()

注)62行目
わたしの場合リソースファイルの x,y座標(8, 0)の位置から魚の画像を描いているため、

rx = (pyxel.frame_count % 2) * 8 + 8

となっているが、左上(0, 0)から描いている場合は

rx = (pyxel.frame_count % 2) * 8

とすればOK。

コメント

タイトルとURLをコピーしました