pygame雷达扫描动画.py

"""pygame雷达扫描动画.py 
"""
# 导入pygame库
import pygame
import math
 
# 初始化pygame引擎
pygame.init()
 
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
MAGENTA = (255, 0,255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
 
PI = 3.141592653   # 定义派
 
# 设置屏幕宽高及新建屏幕对象
size = [400, 400]
screen = pygame.display.set_mode(size)
pygame.display.set_caption("雷达扫描动画")
 
my_clock = pygame.time.Clock() # 新建时钟对象
 
# 新建逻辑变量
done = False

# 起始角度
angle = 0
 
# 矩形大小定义,左上角坐标为(size[0]//2-125,size[1]//2-125)
# 宽高都为 250
box_dimensions = [size[0]//2-125, size[1]//2-125, 250, 250]
while not done:
    for event in pygame.event.get(): # 遍历所有事件
        if event.type == pygame.QUIT:
            done = True
 
    # 填充背景为白色
    screen.fill(WHITE) 
 
    # 画椭圆形
    pygame.draw.ellipse(screen, MAGENTA, box_dimensions, 2)
 
    # 画黑边框
    pygame.draw.rect(screen, BLACK, box_dimensions, 2)
 
    # 由于半径是125,而起始x和y坐标都是20,所以下面的坐标都要加中心点坐标
    x = 125 * math.sin(angle) + size[0]//2
    y = 125 * math.cos(angle) + size[1]//2
 
    # 画线条
    pygame.draw.line(screen, MAGENTA, [size[0]//2, size[1]//2], [x, y], 2)
 
    # 增加角度
    angle = angle + .03
 
    # 角度大于2PI了要把它重置为0
    if angle > 2 * PI:
        angle = angle - 2 * PI
 
    # 显示图像,显示一点点时间,1/60秒后再次重画
    pygame.display.flip()
    my_clock.tick(60)
 
# 退出pygame.
pygame.quit()