如何用Pygame编写应用(一)

一、基本写法

一个基本的Pygame应用由窗体设置、绘制跟按键响应事件组成。

一个基本的pygame应用如下:

import pygame

# 初始化pygame
pygame.init()

# 设置窗口大小 (width,height)
pygame.display.set_mode((600,400))
# 全屏显示
# pygame.display.set_mode((0, 0), pygame.FULLSCREEN)

# 设置窗口名字 
pygame.display.set_caption("演示")

# 设置窗口图标
icon = pygame.image.load('icon.png')   # 读取图标文件
pygame.display.set_icon(icon) #设置窗口图标

is_running = Ture

while is_running:
    # 读取按键事件判断窗口关闭事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            is_running = False
    # 更新屏幕显示
    pygame.display.flip()
# 退出pygame
pygame.quit()

二、绘制

pygame的绘制函数通过pygame.draw引入,具体调用请参考下表。

surface: 窗口实例
color: rgb颜色如(255,255,255)
rect: 坐标元祖也可以是pygame.Rect实例,具体参数为(x轴坐标,y轴坐标,长度,宽度)
center: 圆形的中心位置,(x,y)
radius: 圆形的半径
points: 点列表,[(x1,y1),(x2,y2)]
start_angle: 弧形起始位置
stop_angle: 弧形结束位置,通常使用 math.radians() 将度数转换为弧度。
antialias: 抗锯齿
矩形 
pygame.draw.rect(surface, color, rect)
 
pygame.draw.circle(surface, color, center, radius)
椭圆形 
pygame.draw.ellipse(surface, color, rect)
多边形 
pygame.draw.polygon(surface, color, points)
弧形(无填充的圆) 
pygame.draw.arc(surface, color, rect, start_angle, stop_angle)
文字
pygame.font.Font('arial.ttf', 36) #设置字体
pygame.font.render(text, antialias, color) #通过screen的blit函数绘制到屏幕screen.blit(text,(x,y))

图片 
image = pygame.image.load('example.png')  #读取图片
screen.blit(image, (x, y))  # 绘制图片

三、按键响应

按键响应分为单按键和组合按键,其中单按键可直接通过event.type来进行判断,组合按键通过pygame.key.get_pressed()进行判断,按键与鼠标都区分按下和松开。

1

常用按键常量表如下:

K_a到K_z键盘a-z
K_0到K_9主键盘数字
K_KP0到K_KP9小键盘数字
K_F1到K_F12键盘F1-F12
K_LEFT
K_RIGHT
K_UP
K_DOWN
K_ESCAPEEsc键
K_RETURN回车键
K_BACKSPACE退格键
K_TABTAB键
K_DELETEDELETE键
K_LCTRL左右CTRL键
K_RCTRL
K_LALT左右ALT键
K_RALT
# 略
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

    elif event.type == KEYDOWN:
        # 按键被按下  
        if event.key == K_SPACE:  # 以空格键为例  
            print("空格键被按下")  
         
    elif event.type == KEYUP:  
       # 按键被松开  
       if event.key == K_SPACE:  # 以空格键为例  
           print("空格键被松开")  

    # 这里MOUSEBUTTONDOWN不会判断左键右键以及滚轮或拓展按键
    # 与之对应的为MOUSEBUTTONUP      
    elif event.type == MOUSEBUTTONDOWN:
        print("鼠标被按下")
        if event.button == 1:  
            print("鼠标左键被按下")
        # 等于2时为中键,3为右键,其他侧键可以打印event.button进行查看

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值