移動する物体の色を変更しよう
今回は前回の動きにプラスして、物体の色を変えながら移動させてみましょう。
移動する物体の色を変更するプログラム
物体の色は赤(255,0,0)から始まって、徐々に緑(0,255,0)→青(0,0,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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
### インポート import sys import math import random import pygame from pygame.locals import * ### 定数 WIDTH = 640 # 幅 HEIGHT = 400 # 高さ SIZE = 20 # 辺長 ### モジュール初期化 pygame.init() ### 時間オブジェクト生成 clock = pygame.time.Clock() ### 画面設定 surface = pygame.display.set_mode((WIDTH,HEIGHT)) ### 四角形作成 rect = pygame.Rect(0, 0, SIZE, SIZE) ### スタート初期設定 start_x = random.randint(0, WIDTH -SIZE) start_y = random.randint(0, HEIGHT-SIZE) ### 色初期設定 color_r = 255 color_g = 0 color_b = 0 ### 無限ループ while True: ### ゴール設定 goal_x = random.randint(0, WIDTH -SIZE) goal_y = random.randint(0, HEIGHT-SIZE) ### 角度取得 angle = math.atan2(start_y-goal_y, start_x-goal_x) ### 斜線長取得 bias = int((start_x-goal_x)/math.cos(angle)) ### 斜線移動 for pos in range(bias, -1, -2): ### 画面初期化 surface.fill((0,0,0)) ### 四角形の位置 rect.left = round(math.cos(angle)*pos)+goal_x rect.top = round(math.sin(angle)*pos)+goal_y ### 四角形描画 surface.fill((color_r,color_g,color_b), rect) ### 画面更新 pygame.display.update() ### フレームレート設定 clock.tick(100) ### モード設定 if color_r >= 255: mode = 0 elif color_g >= 255: mode = 1 elif color_b >= 255: mode = 2 ### 色変更 if mode == 0: color_r -= 1 color_g += 1 elif mode == 1: color_g -= 1 color_b += 1 elif mode == 2: color_b -= 1 color_r += 1 ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: ### 終了処理 pygame.quit() sys.exit() ### スタート設定 start_x = rect.left start_y = rect.top |
プログラムを実行すると、物体が色を徐々に変えながらランダムに移動します。