pygame翻转及以中心点旋转的文字.py

pygame翻转及以中心点旋转的文字.py

"""翻转及以中心点旋转的文字.py,这是一个pygame的文本练习,首先新建字体对象,然后具体地渲染成图形,最后合成到screen上。"""
 
# 导入一个叫pygame的模块
import pygame
 
# 初始化pygame模块
pygame.init()
 
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
 
PI = 3.141592653
 
# 设置屏幕的宽度和高度,然后创建屏幕
size = (400, 500)
screen = pygame.display.set_mode(size)
 
pygame.display.set_caption("翻转及以中心点旋转的文字") # 设置窗口标题
 
# 循环直到这个变量的值为True
done = False
clock = pygame.time.Clock()
 
text_rotate_degrees1 = 0 # 旋转角度
text_rotate_degrees2 = 0 # 旋转角度
李兴球center = [180, 350]       # 旋转中心

# 生成字体对象,大小, bold, italics
font = pygame.font.SysFont('Calibri', 25, True, False)
 

# 循环直到done的值为True
while not done:
 
    for event in pygame.event.get():  # 遍历每个事件
        if event.type == pygame.QUIT: # 窗口关闭事件发生
            done = True  # 把此标志设为True
            
    # 填充screen颜色为白色
    screen.fill(WHITE)
 
    # 画两个线条
    pygame.draw.line(screen, BLACK, [100,50], [200, 50])
    pygame.draw.line(screen, BLACK, [100,50], [100, 150])
 
    # 撂一边文字 
    text = font.render("Sideways text", True, BLACK)
    text = pygame.transform.rotate(text, 90)
    screen.blit(text, [0, 0])
 
    # 旋转180度文字
    text = font.render("Upside down text", True, BLACK)
    text = pygame.transform.rotate(text, 180)
    screen.blit(text, [30, 0])
 
    # 翻转的文字
    text = font.render("Flipped text", True, BLACK)
    text = pygame.transform.flip(text, False, True) # 左右翻转,上下翻转
    screen.blit(text, [30, 20])
 
    # 旋转动画,固定左上角
    text = font.render("Rotating text", True, BLACK)
    text = pygame.transform.rotate(text, text_rotate_degrees1)
    text_rotate_degrees1 += 1
    screen.blit(text, [100, 50])

    # 自定义旋转中心
    text = font.render("My name is lixingqiu", True, RED) # 返回图层
    text = pygame.transform.rotate(text, text_rotate_degrees1)
    width,height = text.get_width(),text.get_height()     # 得到新的宽高
    top,left = 李兴球center[0] - width//2,李兴球center[1] -height//2  # 计算左上角坐标
    text_rotate_degrees2 += 1
    screen.blit(text, [top, left])                        # 渲染图层    
 
    # 所有的都画好后,显示出来
    pygame.display.flip()
 
    # fps为60
    clock.tick(60)
 
# 退出pygame
pygame.quit()

 

李兴球

李兴球的博客是Python创意编程原创博客