游戏模版框架_键盘移动画的火柴人

"""游戏模版框架_键盘移动画的火柴人.py
"""
 
import pygame
 
# 定义颜色常量
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
  
def draw_stick_figure(screen, x, y):
    # 画火柴人的头
    pygame.draw.ellipse(screen, BLACK, [1 + x, y, 10, 10], 0) 
    # 画火柴人的腿
    pygame.draw.line(screen, BLACK, [5 + x, 17 + y], [10 + x, 27 + y], 2)
    pygame.draw.line(screen, BLACK, [5 + x, 17 + y], [x, 27 + y], 2) 
    # 画火柴人的身体
    pygame.draw.line(screen, RED, [5 + x, 17 + y], [5 + x, 7 + y], 2) 
    # 画火柴人的手臂
    pygame.draw.line(screen, RED, [5 + x, 7 + y], [9 + x, 17 + y], 2)
    pygame.draw.line(screen, RED, [5 + x, 7 + y], [1 + x, 17 + y], 2)
 
# 启动派gei引擎
pygame.init()
 
# 设置屏幕对象
size = [700, 500]
screen = pygame.display.set_mode(size)
 
pygame.display.set_caption("游戏模版框架_键盘移动画的火柴人.py")
 
# 退出while循环的利器,当单击窗口关闭按钮时的事件发生时它的值会为True
done = False
 
# 这是用来控制帧率的时钟变量
clock = pygame.time.Clock()
 
# 隐藏鼠标指针
pygame.mouse.set_visible(0)
 
# 火柴人每帧在水平和垂直方向移动的像素
x_speed = 0
y_speed = 0
 
# 火柴人当前的坐标
x_coord = 10
y_coord = 10
 
# -------- 程序主循环 -----------
while not done:
    # --- 迭代所发生的每件事
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True 
 
        elif event.type == pygame.KEYDOWN:
            # 按了键盘,如果是方向箭头,则设置速度
            if event.key == pygame.K_LEFT:
                x_speed = -3
            elif event.key == pygame.K_RIGHT:
                x_speed = 3
            elif event.key == pygame.K_UP:
                y_speed = -3
            elif event.key == pygame.K_DOWN:
                y_speed = 3
 
        # 松开某键
        elif event.type == pygame.KEYUP:
            # 如果松开了左右方向箭头,则水平速度归零
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_speed = 0
            elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                y_speed = 0
 
    # --- 下面是游戏逻辑代码段
 
    # 根据水平和垂直速度改变火柴人的x和y坐标,重画的时候它们就会出现在新的位置
    x_coord = x_coord + x_speed
    y_coord = y_coord + y_speed
 
    # --- 下面是重画代码段
 
    # 清屏幕为白色,然后在上面画一个火柴人
    screen.fill(WHITE) 
    draw_stick_figure(screen, x_coord, y_coord) # 画火柴人 
 
    # 显示
    pygame.display.flip()
 
    # 设置帧率为60
    clock.tick(60)
 
# 安全退出到IDLE
pygame.quit()