(33)pygame的基本操作

本文介绍了Pygame框架中的基本操作,包括模块介绍、事件处理(键盘、鼠标事件)、字体处理、图形绘制和动画实现。通过示例代码详细讲解了如何创建窗口、响应用户输入、显示文本、绘制图形并实现动画效果,以及播放音乐的功能。
摘要由CSDN通过智能技术生成

Pygame 框架中的模块

在Pygame 框架中有很多模块,官方网址 http://pygame.org/ 。 其中最常用模块的具体说明如表 1-1 所示。
表1-1 Pygame 框架中的常用模块
在这里插入图片描述
在这里插入图片描述
【示例 1-1】开发第一个 Pygame 程序

import pygame
# 初始函数,使用 pygame 的第一步;
pygame.init()
# 生成主屏幕 screen
screen=pygame.display.set_mode((600,500),0,32)
# 设置标题
pygame.display.set_caption('Hello Pygame')
while True:
    # 刷新屏幕
    pygame.display.update()

执行结果如图 1-1 所示:
在这里插入图片描述
图 1-1 示例 1-1 运行效果图
对上述示例代码的具体说明如下所示。
(1)set_mode 函数:会返回一个 Surface 对象,代表了在桌面上出现的那个窗口。在 3 个参数中,第 1 个参数为元组,表示屏幕的大小;第 2 个标志位,具体含义如表 1-2 所示,如果不用什么特性,就指定 0;第 3 个为色深。
表 1-2 各个标志位的具体含义
在这里插入图片描述
(2)游戏的主循环是一个无限循环,直到用户退出。在这个主循环里面做的事情就是不停的刷新新画面。
注意:
□如果未安装 pygame 模块的,打开控制台执行 pip install pygame 命令进行安装。

事件操作

事件是一个操作,通常来说,Pygame 会接受用户的各种操作(比如按键盘,移动鼠标等)。这些操作会产生对应的事件,例如按键盘事件,移动鼠标事件。事件在软件开发中非常重要,Pygame 把一系列的事件存放在一个队列里,并逐个进行处理。
1.事件检索

使用函数 pygame.event.get()获取所有的事件,表 1-3 列出了 Pygame 中常用的事件。
表1-3 Pygame 中常用的事件
在这里插入图片描述
2.处理鼠标事件

在 Pygame 框架中,MOUSEMOTION 事件会在鼠标动作的时候发生,它有如下所示3 个参数。
□buttons:一个含有 3 个数字的元组,3 个值分别代表左键、中键和右键,1 就表示按下。
□pos:位置
□rel:代表现在距离上次产生鼠标事件时的距离
和 MOUSEMOTION 类 似 , 常 用 的 鼠 标 事 件 还 有 MOUSEBUTTONUP 和MOUSEBUTTONDOWN 两个。在很多时候,开发者只需要知道鼠标按下就可以不

用上面那个比较强大的事件了。这两个事件的参数如下所示。
□button:这个值代表操作哪个按键
□pos:位置

3.处理键盘事件

在 Pygame 框架中,键盘和游戏手柄的事件比较类似,处理键盘的事件为 KEYDOWN和KEYUP。KEYDOWN 和 KEYUP 事件的参数描述如下所示。
□key:按下或者放开的键值,是一个数字,因为很少有人可以记住,所以在 Pygame中可以使用 K_xxx 来表示,比如字母 a 就是 K_a,还有 K_SPACE 和 K_RETURN等。
□mod:包含了组合键信息,如果 mod&KMOD_CTRL 是真,表示用户同时按下了Ctrl 键,类似的还有 KMODE_SHIFT 和 KMODE_ALT。
□unicode:代表了按下键对应的 Unicode 值。
【示例 1-2】处理键盘事件

import pygame
pygame.init()
screen=pygame.display.set_mode((600,500),0,32)
# 加载图片
image=pygame.image.load('pic01.gif')
# 设置x,y初始值作为初始位置
x,y=0,0
# 设置横向和纵向两个方向的移动距离
while True:
    for event in pygame.event.get():
        # 如果是退出
        if event.type==pygame.QUIT:
            exit()
        # 如果是按下
        if event.type==pygame.KEYDOWN:
            if event.key==pygame.K_LEFT:
                x-=10
            elif event.key==pygame.K_RIGHT:
                x+=10
            elif event.key==pygame.K_UP:
                y-=10
            elif event.key==pygame.K_DOWN:
                y+=10
        screen.fill((0,0,0))
        screen.blit(image
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值