この記事では、Pygameを用いてレーダー画面を作る方法とソースコードを解説します。
レーダー画面
Python + Pygameを用いてレーダー画面を作成しました。
処理手順
プログラムの処理の流れは下記の通りです。
①モジュール「pygame」「sys」「math」をインポートする。
②レーダービームの初期角度を設定する。
③Pygameを初期化する。[pygame.init]
④大きさ400*400の画面(ウィンドウ)を生成する。[pygame.display.set_mode]
⑤レーダー画面の背景を描画する。(円と直線)
⑥レーダービームの軌跡を描画する。
⑦背景色を黒に設定する。
⑧30ms間待機する。(レーダービームの回転速度を調整)
⑨画面を更新する。(黒色で塗りつぶし)
⑩5-9の処理を繰り返す。
⑪閉じるボタンが押されたら終了する。
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import sys
import pygame
import math
from pygame.locals import *
def main():
(x,y) = (400,400) # 画面サイズ
deg = 0 # 初期角度
pygame.init() # pygame初期化
pygame.display.set_mode((x, y), 0, 32) # 画面設定
screen = pygame.display.get_surface()
while (1):
deg += 2
if deg >= 360: # 角度が360以上になったら初期化(0)
deg = 0
# レーダー画面の背景描画
pygame.draw.circle(screen, (0, 200, 0), (int(x/2), int(y/2)), int(x/2), 1)
pygame.draw.circle(screen, (0, 200, 0), (int(x/2), int(y/2)), int(x/4), 1)
pygame.draw.line(screen, (0, 200, 0), (0, int(y/2)), (x, int(y/2)))
pygame.draw.line(screen, (0, 200, 0), (int(x/2), 0), (int(x/2), y))
# レーダービームの軌跡描画
for i in range(1, 30):
dx = x/2 + x/2 * math.cos(math.radians(deg-i))
dy = y/2 + x/2 * math.sin(math.radians(deg-i))
pygame.draw.aaline(screen, (0, int(255/i), 0), (int(x/2), int(y/2)), (dx, dy),5)
pygame.display.update() # 画面更新
pygame.time.wait(30) # 更新時間間隔
screen.fill((0, 20, 0, 0)) # 画面の背景色
# イベント
for event in pygame.event.get():
if event.type == QUIT: # 閉じるボタンが押されたら終了
pygame.quit() # Pygameの終了(画面閉じられる)
sys.exit()
if __name__ == "__main__":
main()
| – | 関連記事 |
|---|---|
| 1 | ■【Pygame入門】ゲームプログラミング |
| 2 | ■【Python入門】サンプル集 |

コメント
pygame.draw.circle(screen, (0, 200, 0), (x/2, y/2), x/2, 1)
のところで、”integer argument expected, got float”が起こります。
intへの型変換が必要です。
pygame.draw.circle(screen, (0, 200, 0), (int(x/2), int(y/2)), int(x/2), 1)
※千田様
コメントありがとうございます。
該当箇所を修正致しました。