四角形の色を変更しよう
前回は画面に四角形を表示するプログラムを作成しました。
今回は四角形の色を徐々に変えていくプログラムを作成します。
色の変更には、四角形オブジェクト.fill()の色合成オプション(special_flags)を使います。
四角形の色を変更するプログラム
以下のプログラムは、3つの四角形を色合成オプション(special_flags)を使って、徐々に色を重ねていきます。
使うオプションの値は、BLEND_ADDとBLEND_SUBです。
デフォルトの黒(0,0,0)からスタートして、それぞれ赤(1,0,0)、緑(0,1,0)、青(0,0,1)をBLEND_ADDで足していきます。
赤、緑、青は同じ割合で値を変えているので、代表して赤の位置にあるピクセルを参照して、値が255になったら逆にBLEND_SUBで引いていきます。
あとは、それの繰り返しです。
メモ
色の取得には surface.get_at() を使います。
戻り値はColorオブジェクトで、このプログラムでは赤の Color.r を参照しています。
ちなみに緑は Color.g、青は Color.b です。
| 
					 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  | 
						### インポート import pygame from pygame.locals import * ### 定数 pos_red   = (195, 10)   # 赤左上座標 pos_green = (100, 75)   # 緑左上座標 pos_blue  = (290,140)   # 青左上座標 rect_size = (250,250)   # 四角形サイズ ### モジュール初期化 pygame.init() ### 画面設定 surface = pygame.display.set_mode((640,400)) ### 無限ループ while True:     ### 四角形設定     rects = []     rects.append(pygame.Rect(pos_red,   rect_size))     rects.append(pygame.Rect(pos_green, rect_size))     rects.append(pygame.Rect(pos_blue,  rect_size))     ### 色設定(赤,緑,青)     colors = [(1,0,0), (0,1,0), (0,0,1)]     ### BLEND設定(赤ピクセルで判定)     color = surface.get_at((pos_red))     if   color.r == 0:         blend = BLEND_ADD     elif color.r == 255:         blend = BLEND_SUB     ### リスト分ループ     for idx,rect in enumerate(rects):         ### 四角形オブジェクト         obj = surface.fill(colors[idx], rect, blend)         ### 画面更新         pygame.display.update(obj)     ### 一定時間停止     pygame.time.wait(5)     ### イベント処理     for event in pygame.event.get():         if event.type == KEYDOWN and event.key == K_ESCAPE:             break     else:         continue     ### whileループ終了     break ### 終了処理 pygame.quit()  | 
					
プログラムを実行すると、以下の画像が表示されます。