ランダムで現れた円をクリックして円の色を変えよう
前回はPygameで作った画面に円を複数表示して、クリックした円の色を変えるプログラムを作りました。
今回は円をランダムに表示して、表示された円をクリックすると円の色が変わるプログラムを作りましょう。
ランダムで円を描画してクリックすると円の色が変わるプログラム
カウンタを設定して、カウンタが100になるまで円を描画し続けます。
カウンタが110になると、表示する円の位置、色、大きさをリセットします。
カウンタが160を超えるとカウンタを0に戻します。
つまりカウンタが100から160の間は、円は表示されません。
今回は表示される円はひとつだけなので、クリックした位置が表示されている円の中心からどれくらい離れているのかを調べて、円の半径以内であれば円をクリックしたと判定します。
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 |
### インポート import sys import math import random import pygame from pygame.locals import * ### 定数 WIDE = 420 # 画面横サイズ HIGHT = 420 # 画面縦サイズ R_SIZE = 60 # 円半径 W_TIME = 10 # 待ち時間 C_POS = [[70, 70],[210, 70],[350, 70], ### 円の位置 [70,210],[210,210],[350,210], [70,350],[210,350],[350,350]] ### 変数初期化 cnt = 0 pos = random.choice(C_POS) rgb = (255,255,255) size = R_SIZE ### 画面初期化 pygame.init() surface = pygame.display.set_mode((WIDE, HIGHT)) ### 無限ループ while True: ### 全画面クリア surface.fill((0,0,0)) ### 円描画 if cnt < 100: pygame.draw.circle(surface, rgb, (pos[0],pos[1]), size, 0) ### 変数リセット elif cnt == 110: pos = random.choice(C_POS) rgb = (255,255,255) size = R_SIZE ### カウンタリセット elif cnt > 160: cnt = 0 ### 画面アップデート pygame.display.update() ### 待機 pygame.time.wait(W_TIME) ### カウントアップ cnt += 1 ### イベント取得 for event in pygame.event.get(): ### マウスボタンイベント if event.type == MOUSEBUTTONDOWN: ### カーソル位置確認 x_size = pos[0]-event.pos[0] y_size = pos[1]-event.pos[1] ### 円の中心からの距離 dist = math.sqrt(x_size**2+y_size**2) ### カーソルが円内にあれば円の色とサイズを変更 if dist < R_SIZE: rgb = (255,0,0) size = R_SIZE+5 ### 終了処理 if event.type == QUIT: pygame.quit() sys.exit() |
ランダムで表示された円をクリックするとその円は赤になり、サイズがやや大きくなります。
Pygameの詳しい使い方は、以下のPygame公式サイトを参照してください。