Pygameを使って文字の色を変更しよう
前回は文字の背景色を一定間隔ごとに変更するプログラムを作成しました。
今回は文字の色が徐々に変わっていくプログラムを作成しましょう。
ベース画面を塗りつぶす
今回は何度も画面に文字を表示するため、ベース画面をその都度黒で塗りつぶすようにします。
引数に四角形オブジェクトを指定すると、その四角形の部分のみを指定した色で塗りつぶします。
ベース画面オブジェクト.fill((赤,緑,青), rect=四角形オブジェクト, special_flags=色合成)
引数に赤、緑、青の値を 0~255 の範囲で指定します。
(0,0,0)にすると黒、(255,255,255)にすると白になります。
文字の色を徐々に変えるプログラム~その1
前回のプログラムを元にして、文字の色を徐々に変えるプログラムを書いてみましょう。
以下のプログラムは表示する文字が徐々に白から緑に変わります。
なお、今回は文字の背景色は指定しないで、文字のみを表示しています。
最初は白(255,255,255)で始まり、徐々に緑(0,255,0)になるようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
### インポート import pygame from pygame.locals import * ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((640,400)) ### 文字設定 font = pygame.font.Font("/Windows/Fonts/meiryo.ttc", 40) ### 文字色初期値 color = 255 ### 色上下限フラグ flag = 0 ### 無限ループ while True: ### 文字列設定(リスト) text = font.render("Hello World", True, (color,255,color)) ### ベース画面塗りつぶし surface.fill((0,0,0)) ### テキスト画面表示 surface.blit(text, (208,169)) ### 画面更新 pygame.display.update() ### 一定時間停止 pygame.time.wait(5) ### 色上下限確認 if color <= 0: flag = 0 elif color >= 255: flag = 1 ### 文字色変更 if flag == 0: color += 1 else: color -= 1 ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: break else: continue ### whileループ終了 break ### 終了処理 pygame.quit() |
プログラムを実行すると、以下のように文字の色が徐々に白から緑に変わります。
文字の色を徐々に変えるプログラム~その2
上記プログラムは緑のみを変えましたが、以下のプログラムでは赤→緑→青の順で徐々に変わります。
最初は白(255,255,255)から始まり、徐々に赤(255,0,0)→白(255,255,255)→緑(0,255,0)→白(255,255,255)→青(0,0,255)→白(255,255,255)となっていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
### インポート import pygame from pygame.locals import * ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((640,400)) ### 文字設定 font = pygame.font.Font("/Windows/Fonts/meiryo.ttc", 40) ### 文字色初期値(確認用,赤,緑,青) color = [255,255,255,255] ### 色上下限フラグ(0:上限,1:下限) flag = 0 ### リスト用インデックス idx = 1 ### 無限ループ while True: ### 文字列設定(リスト) text = font.render("Hello World", True, (color[1],color[2],color[3])) ### ベース画面塗りつぶし surface.fill((0,0,0)) ### テキスト画面表示 surface.blit(text, (208,169)) ### 画面更新 pygame.display.update() ### 一定時間停止 pygame.time.wait(5) ### 文字色変更 for i in range(len(color)): if i != idx: if flag == 0: color[i] -= 1 else: color[i] += 1 ### 色上下限確認 if color[0] <= 0: flag = 1 elif color[0] >= 255: flag = 0 ### インデックス変更 if idx >= len(color) - 1: idx = 1 else: idx += 1 ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: break else: continue ### whileループ終了 break ### 終了処理 pygame.quit() |
プログラムを実行すると、以下のように文字の色が白→赤→白→緑→白→青の順で徐々に変わります。