製作実験という授業でライントレーサーを作るのですが、今までにいろいろなトレーサーを作っているのでただ作るだけでは面白くないと思い、ディスプレイに走行状態を表すアニメーションなんかを移そうと思いました。ちょうど、ラズパイ用のディスプレイも買ったのでPygameを使って作り、ラズパイで写すことにしました。

・準備
 ラズパイとWindowsのPCのセットアップの仕方は忘れました。ラズパイではデフォルトのもの、ノートパソコンではPyCharmを使っています。

・プログラム
import sys, pygame

pygame.mixer.pre_init(44100, -16, 1, 512)
pygame.init()
window_size = (320, 240)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(window_size)
#img_char1 = pygame.image.load('reimu2.png')
img_char2 = pygame.image.load('reimu3.png')
before = 3
after = 3

# SEの読み込み
se = pygame.mixer.Sound('se.wav')
"""
# BGMを読み込んで再生
pygame.mixer.music.load('bgm1.wav')
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(-1)
"""

x = 75 # 表示位置X

# キー入力
class KeyState:
def __init__(self):
self.key_new = pygame.key.get_pressed()
self.key_old = self.key_new

def update(self):
self.key_old = self.key_new
self.key_new = pygame.key.get_pressed()

def get_key(self, name):
return self.key_new[name]

ks = KeyState()
end_game = False
while not end_game:
for event in pygame.event.get():
if event.type == pygame.QUIT:
end_game = True

ks.update()

r, g, b = 255, 255, 255
if ks.get_key(pygame.K_w):
loop_anim_index = int(20) % 4
after = 0
elif ks.get_key(pygame.K_a):
loop_anim_index = int(21) % 4
after = 1
elif ks.get_key(pygame.K_d):
loop_anim_index = int(22) % 4
after = 2
elif ks.get_key(pygame.K_s):
loop_anim_index = int(23) % 4
after = 3
else:
loop_anim_index = int(23) % 4
after = 3


if before != after:
se.play() # SEの再生

before = after

screen.fill((r,g,b))
#screen.blit(img_char1, (x, 50), (27 * loop_anim_index, 0, 27, 16))
screen.blit(img_char2, (x, 150), (163 * loop_anim_index, 0, 163, 96))
pygame.display.flip()
clock.tick(60)

sys.exit(0)
 このようなプログラムを書きました。
 いろいろなプログラムを参考にして適当に描いたので、ぐちゃぐちゃですが許してください。
 コメントアウトしている文では、小さいほうのアニメーションを動かせます。

・素材
reimu2
reimu3
 今回はサイズ違いの二つのものを作りました。画力がないので微妙ですが。
 博麗霊夢が旗をパタパタしてるように見えたらいいです。

・動作
 映像のようにWを押すと両手をA,Dを押すとそれぞれ右手と左手を挙げてくれます。


 今回は製作実験のためにPygameを使いました。ソフトの素材はほとんどできていると思うので、ハードの制作とソフトの合成?を進めていきたいです。
 それではまた今度。