GIF
画像の輪郭
ここをクリックしてください
import pygame
# Pygameの初期化
pygame.init()
screen = pygame.display.set_mode((260,160))
# 画像を読み込む
# ここに画像のパスを貼り付ける
image = pygame.image.load(rパス).convert_alpha()
# 画像からマスクを作成
mask = pygame.mask.from_surface(image)
# マスクの形を取得(マスクの矩形を取得)
mask_rect = mask.get_bounding_rects()
# マスクのピクセル情報を取得
mask_outline = mask.outline()
image.set_alpha(0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((0, 0, 0)) # 背景を白でクリア
screen.blit(image, (0, 0)) # 画像を表示
# マスクの輪郭を描画
for point in mask_outline:
pygame.draw.circle(screen, (255, 255, 255), point, 1)
pygame.display.flip()
pygame.quit()
アニメーション
Zキーで画像が動き出します。
ここをクリックしてください
import pygame
import sys
from pygame.locals import *
import time
pygame.init()
screen = pygame.display.set_mode((160, 160))
pygame.display.set_caption('animation')
# ここに画像のパスを貼り付ける
heart1 = pygame.image.load(rパス)
heart2 = pygame.image.load(rパス)
effect1 = False
effect2 = False
show1 = False
show2 = False
y1 = 120
y2 = 60
# スタート時間を初期化
start_time1 = None
start_time2 = None
while True:
screen.fill((0, 0, 0))
if effect1:
if start_time1 is None:
start_time1 = time.time()
if time.time() - start_time1 > 0.01:
show1 = True
y1 -= 1
start_time1 = time.time() # タイマーをリセット
if effect2:
if start_time2 is None:
start_time2 = time.time()
if time.time() - start_time2 > 0.05:
show2 = True
y2 -= 1
start_time2 = time.time() # タイマーをリセット
if show1:
screen.blit(heart1, (120, y1))
if show2:
screen.blit(heart2, (60, y2))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_z:
effect1 = True
effect2 = True
if event.key == K_x:
y1 = 120
y2 = 60
カウントダウン
Zキーでカウントダウンを開始します。
ここをクリックしてください
import pygame
import sys
from decimal import Decimal, ROUND_DOWN
from datetime import datetime
# Pygameの初期化
pygame.init()
# ウィンドウのサイズとタイトルを設定
screen_size = (800, 600)
screen = pygame.display.set_mode(screen_size)
pygame.display.set_caption("カウントダウンタイマー")
# フォントの設定
# ここにフォントのパスを貼り付ける
font = pygame.font.Font(パス, 74)
# カウントダウンタイマーの設定(秒単位)
countdown_time = Decimal('5.0') # 例: 3分 = 180秒のカウントダウン
# 開始時間を記録する変数(初期化)
start_ticks = None
# ゲームループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_z:
# zキーを押したときにカウントダウンを開始
start_ticks = pygame.time.get_ticks()
# 画面を白で塗りつぶす
screen.fill((255, 255, 255))
if start_ticks is None:
# カウントダウン開始前に設定された時間を表示
initial_time = "00:05:00" # 3分00秒00センチ秒
text = font.render(initial_time, True, (0, 0, 0))
countdown_rect = text.get_rect(topright=(screen_size[0] * 0.5, screen_size[1] * 0.5))
screen.blit(text, countdown_rect.topleft)
else:
# カウントダウンが開始されたら経過時間を計算して表示
milliseconds = pygame.time.get_ticks() - start_ticks
seconds = Decimal(milliseconds) / Decimal('1000')
countdown = (countdown_time - seconds).quantize(Decimal('0.01'), rounding=ROUND_DOWN)
# カウントダウンタイマーが0以下になったら停止
if countdown <= 0:
countdown = Decimal('0.00')
start_ticks = None
# 分、秒、センチ秒に変換
total_seconds = int(countdown)
minutes = total_seconds // 60
seconds = total_seconds % 60
centiseconds = int((countdown - total_seconds) * 100)
# フォーマットして表示
time_str = f"{minutes:02}:{seconds:02}:{centiseconds:02}"
# カウントダウン時間を描画
text = font.render(time_str, True, (0, 0, 0))
countdown_rect = text.get_rect(topright=(screen_size[0] * 0.5, screen_size[1] * 0.5))
screen.blit(text, countdown_rect.topleft)
# 描画内容を更新
pygame.display.flip()
# Pygameの終了処理
pygame.quit()