【Pygame Zero】キャラクターの色を 変えよう!

こんにちは!
「Pythonしよう!楽しく学べるプログラミング教室」の
ラッチ先生です


スックです。よろしくね!

基礎プログラムと 画像を入れた
「見た目06 boonの色を 変えよう!」zipフォルダを ダウンロードしてください



この基礎プログラムは、こちらの記事で解説しています

学習の流れ
1秒ごとに ランダムに選んだ場所で表示する
boonをクリックすると 1回転する
boonをクリックすると 色が 変わる
プログラムを 実行してみよう
プログラミングの仕方を説明します
モジュールを 用意する

今回の「boonの色を 変えよう」では、
・ boon を クリックする
・ boonが ランダムな場所へ 移る
・ boon の色を 変える
プログラムが あります
そこで、3つのモジュールを 用意しました




モジュールとは、
関数やプログラムが書かれているファイルのことだよ
今回のプログラミングのポイント

今回のプログラミングには、ポイントが 3つあります


これで、変数boonに「 . (ドット)」を付ければ 使えるよ


数字は、『 0~199 』の200段階だよ
1秒ごとに ランダムに選んだ場所で 表示する

最初に、
schedule_interval( ) メゾットを使って
1秒ごとに ランダムに決めた場所で表示させよう

def boon_move(): #1 boonの動きを まとめる
boon.x = random.randint(50, WIDTH-50) #2 boonのx座標に 50~750から ランダムに決めて代入する
boon.y = random.randint(50, HEIGHT-50) #3 boonのy座標を 50~540から ランダムに決めて代入する
clock.schedule_interval(boon_move, 1.0) #4 1秒ごとに boon_move関数を 実行する

簡単に できちゃったね
クリックすると 1回転する

つぎは、
collidepoint_pixel( ) メゾットを使って
クリックしたら boonを1回転させよう

is_rotating = False #1 変数is_rotating(回転している?)に Falseを代入する
rotation_speed = 12 #2 変数ratation_speed(回転スピード)に 12を代入する
def on_mouse_down(pos): #3 クリックした動きをまとめる
global is_rotating #4 グローバル変数:is_rotating
if boon.collidepoint_pixel(pos): #5 もし boonに クリックしたら
is_rotating = True #6 変数is_rotatingに Trueを代入する
def boon_rotate(): #1 boonの回転をまとめる
global is_rotating #2 グローバル変数:is_rotating
if is_rotating: #3 もし 変数is_rotatingが Trueなら
boon.angle += rotation_speed #4 boonの向きを 変数rotation_speed増え続ける
if boon.angle >= 360: #5 もし boonの向きが 360度以上になったら
boon.angle = 0 #6 boonの向きに 0度を代入する
is_rotating = False #7 変数is_rotatingに Falseを代入する
def update(): #8 更新する
boon_rotate() #9 boonの回転を実行する

変数rotation_speed で、回転の速さが 変わるよ
クリックすると 色が変わる

boonの色を 変えるために
VisualEffect( )を使います
boon = VisualEffect("boon", (400, 300)) #1 変数boonに ビジュアルエフェクト(設計図)で作るboonを 代入する
def draw():
screen.fill("white")
boon.draw(screen) #2 スクリーンに boonを 表示する


change_color( ) メゾットを使って
boonの色を 変えよう

def on_mouse_down(pos):
global is_rotating
if boon.collidepoint_pixel(pos):
is_rotating = True
boon.change_color(20) #1 boonの色相を 20進めて、色を変える
ポイント
boonの色を 色相で表します。
色相とは、色の名前。0~199の数字で表します。

30. boon.change_color(20) ・・・ boonの色相を20進めて、色を変えます

これで、今回の学習は終了! おつかれさま
まとめ

今回は、
boonをクリックすると 色が変わるプログラムを 作りました。
import pgzrun
from pgzhelper import *
from visual import VisualEffect
import random
WIDTH = 800
HEIGHT = 590
boon = VisualEffect("boon", (400, 300))
is_rotating = False
rotation_speed = 12
def draw():
screen.fill("white")
boon.draw(screen)
def boon_move():
boon.x = random.randint(50, WIDTH-50)
boon.y = random.randint(50, HEIGHT-50)
clock.schedule_interval(boon_move, 1.0)
def on_mouse_down(pos):
global is_rotating
if boon.collidepoint_pixel(pos):
is_rotating = True
boon.change_color(20)
def boon_rotate():
global is_rotating
if is_rotating:
boon.angle += rotation_speed
if boon.angle >= 360:
boon.angle = 0
is_rotating = False
def update():
boon_rotate()
pgzrun.go()

キャラクターの見た目を 変えるVisualEffect( )を使って、
boonの 色を 変えるプログラムを作りました。


キャラクターの色を変えるプログラムを作る手順です。



みんなも試してみてね
それじゃ、またね!