PyGame基础语法

PyGame是Python的第三方库,用于游戏开发。本文详细介绍了PyGame的基础语法,包括模块简介、Display模块的主窗口创建、Surface对象的使用、Transform模块的图像变换、Time模块的游戏帧率控制、Rectangle的矩形操作、Event事件处理、Draw模块的图形绘制、Font的文本处理以及Sprite精灵的创建和碰撞检测。每个部分都有详细的介绍和案例,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyGame 基础语法

一、 模块简介

1、 概述

pygame是Python的第三方库,里面提供了使用Python开发游戏的基础包,但是在进行游戏开发的时候不推荐使用pygame,本文章以示例的形式对pygame的一些简单的使用方式进行讲解

pygame中文文档,本文章只是对pygame模快有个大致的讲解,具体语法查看官方文档!

https://images.cnblogs.com/cnblogs_com/blogs/722174/galleries/2074790/o_220419000552_20210707205630.webp

2、 安装

pip install pygame -i http://pypi.douban.com/simple/

3、 模块概览

模块名 功能
pygame.cdrom 访问光驱
pygame.cursors 加载光标
pygame.display 访问显示设备
pygame.draw 绘制形状、线和点
pygame.event 管理事件
pygame.font 使用字体
pygame.image 加载和存储图片
pygame.joystick 使用游戏手柄或者 类似的东西
pygame.key 读取键盘按键
pygame.mixer 声音
pygame.mouse 鼠标
pygame.movie 播放视频
pygame.music 播放音频
pygame.overlay 访问高级视频叠加
pygame 就是我们在学的这个东西了……
pygame.rect 管理矩形区域
pygame.sndarray 操作声音数据
pygame.sprite 操作移动图像
pygame.surface 管理图像和屏幕
pygame.surfarray 管理点阵图像数据
pygame.time 管理时间和帧信息
pygame.transform 缩放和移动图像

4、 第一个程序

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: A.L.Kun
# @file: hello_.py
# @time: 2022/4/18 23:21
from pygame.locals import *  # 里面存储了pygame模块要使用的所有的枚举值
import pygame  # 导入pygame模块
from sys import exit

# 初始化pygame,为使用硬件做准备
pygame.init()
# 创建一个窗口
screen = pygame.display.set_mode((480, 850), 0, 32)
# 设置窗口标题
pygame.display.set_caption("hello world")

# 加载图片
background = pygame.image.load("./img/background.png").convert_alpha()  # 加载透明背景图片
mouse_cursor = pygame.image.load("./img/cursor.ico").convert()  # 加载鼠标图片
mouse_cursor.set_colorkey((0, 0, 0))  # 设置加载图片时,忽略黑色

while True:
    for event in pygame.event.get():  # 添加事件监听
        if event.type == QUIT:  # 接收到退出事件后退出程序
            exit()
    screen.blit(background, (0, 0))  # 画上背景图

    x, y = pygame.mouse.get_pos()  # 获得鼠标位置
    # 计算光标左上角位置
    x -= mouse_cursor.get_width() / 2
    y -= mouse_cursor.get_height() / 2
    # 画上光标
    screen.blit(mouse_cursor, (x, y))
    # 刷新画面
    pygame.display.update()

set_mode:创建一个主窗口

convert:将图像转换为surface对象,每次加载完图片都要调用此方法

5、 事件循环

  1. 处理外部输入(鼠标点击或键盘按下事件)

    这意味着游戏在进行的同时,需要响应与处理用户的操作—这些可能是键盘上的键被按下,或鼠标被点击等事件。

  2. 更新游戏对象位置或状态

    如果飞机对象在空中飞行,收到重力作用,自身的位置需要改变。如果两个对象相互碰撞,则需要爆炸。

  3. 渲染

    此步骤中,在屏幕上重新绘制所有更新位置后的所有游戏对象。

二、 Display

1、 简介

pygame.display 其为显示模块,用于控制显示窗口和屏幕。

该模块提供对pygame显示的控制。Pygame有一个单一的显示Surface,它要么包含在一个窗口中,要么全屏运行。一旦你创建了显示,你就会把它当作一个普通的Surface。变化在屏幕上并不立即可见;你必须选择两个翻转功能中的一个来更新实际的显示。

显示的原点,其中x=0,y=0,是屏幕的左上方。两个轴都向屏幕右下角正向增加。

2、 创建主窗口

screen = pygame.display.set_mode(size=(),flags=0)

参数:

  • size:设置主窗口大小,传入一个元组

  • flag:功能标志位,表示创建的主窗口样式,比如创建全屏窗口、无边框窗口等,flags 参数值见下表

    标志位 功能
    pygame.FULLSCREEN 创建一个全屏窗口。
    pygame.HWSURFACE 创建一个硬件加速窗口,必须和 FULLSCREEN 同时使用。
    pygame.OPENGL 创建一个 OPENGL 渲染窗口。
    pygame.RESIZABLE 创建一个可以改变大小的窗口。
    pygame.DOUBLEBUF 创建一个双缓冲区窗口,建议在 HWSURFACE 或者 OPENGL 时使用。
    pygame.NOFRAME 创建一个没有边框的窗口。

3、 添加元素

3.1 简介

当运行程序后会在电脑桌面上出现一个游戏的主窗口,这个主窗口的本质是一个 surface 对象,把理解为画布、画板、白纸在合适不过了,它相当于一个载体,用于承载一切游戏所用到的元素。假如您需要将一段文本方放置到主窗口中,那么您需要先创建一个包含文本的 surface 对象,之后再将它附加到主窗口上。简单的理解,就是将一张图 A 粘贴到另一张图 B 上。

主窗口(screen)相当于游戏程序中尺寸最大的 Surface 对象,在这个最大的“画布”中,我们还可以添加其他“小”的 Surface 对象,这些对象以矩形的形式存在于主窗口中,它们共同组成了一个游戏程序。

3.2 语法
scrren.blit(source, dest, area=None, special_flags = 0)

参数:

  • source:表示要粘贴的 Surface 对象
  • dest:主窗口中的一个标识的坐标位置,可以接受一个 (x,y) 元组,或者 (x,y,width,height) 元组,也可以是一个 Rect 对象
  • area:接受一个 Rect 对象,默认为 None,如果提供该参数则相当于抠图操作,即在屏幕的指定区域显示想要的内容
  • special_flags:可选参数,它是 Pygame.1.8 版本新增的功能,用于指定对应位置颜色的混合方式,参数值有 BLEND_RGBA_ADD、BLEND_SUB 等。如果不提供该参数的情况下,默认使用 source 的颜色覆盖 screen 的颜色

注意:

  • 使用blit方法后,要使用update或flip方法更新界面

4、 其他功能

方法名称 说明
pygame.display.get_surface() 获取当前显示的 Surface 对象。
pygame.display.flip() 更新整个待显示的 Surface 对象到屏幕上。
pygame.display.update() 更新部分软件界面显示。
pygame.display.Info() 产生一个 VideoInfo 对象,包含了显示界面的相关信息。
pygame.display.set_icon() 设置左上角的游戏图标,图标尺寸大小为 32*32。
pygame.display.iconify() 将显示的主窗口即 Surface 对象最小化,或者隐藏。
pygame.display.get_active() 当前显示界面显示在屏幕上时返回 True,如果窗口被隐藏和最小化则返回 False。

三、 Surface

1、 创建图像

pygame 针对文本、图像、颜色提供了不同模块来生成它们各自的 Surface 对象。Surface 模块是Pygame 中专门用来新建图像的,通过该模块可以创建一个 Surface 对象,语法格式如下 :

surface = pygame.Surface(size=(width,height),flags,depth)

参数:

  • size:表示 Surface 对象的矩形区域大小;如果不设置尺寸,Surface 默认创建一个和主游戏屏幕同样大小的区域
  • flags:功能标志位,有两个可选参数值 HWSURFACE 和 SPCALPHA,前者代表将创建的 Surface 对象存放于显存中,后者表示让图像的每一个像素都包含一个 alpha 通道
  • depth:指定像素的颜色深度,默认为自适应模式,由 Pygame 自动调节

2、 加载图像

语法:

img = pygame.image.load("file_path").convert()  

注意:

  • 此处之所以使用 convert()来转换被加载图片的像素格式,是为了提升 Pygame 对图片的处理速度,该操作能够保证图像的像素格式与图片的显示格式是相同的

通过 image.load() 方法可以加载游戏的背景图,或者游戏中使用的其他元素,比如的人物、道具等等。

如:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: A.L.Kun
# @file: surface_.py
# @time: 2022/4/19 10:02
from pygame.locals import *
import pygame
from sys import exit

# 初始化界面
pygame.init()

# 创建一个窗口
screen = pygame.display.set_mode((300, 300), 0)
# 设置标题
pygame.display.set_caption("Surface对象")
# 使得主窗口的界面为纯白色
screen.fill((255, 255, 255))

# 创建一个Surface对象
surface = pygame.Surface((20, 20), flags=pygame.HWSURFACE)
# 对象填充粉色
surface.fill("pink")

# 加载一个图像对象
img_background = pygame.image.load("./img/background.png").convert()

# 添加事件循环
while True:
    # 循环获取事件,监听事件
    for event in pygame.event.get():
        # 判断用户是否点了关闭按钮
        if event.type == pygame.QUIT:
            # 卸载所有模块
            pygame.quit(
<think>好的,我现在需要帮助用户学习Pygame基础知识。用户之前询问过快速排序,现在转向了Pygame,可能是想开始游戏开发。首先,我得确定用户的需求是什么。他们可能是一个编程新手,对Python有一定了解,现在想进入游戏开发领域。Pygame是一个常用的库,所以需要从安装开始,然后是基本的结构和功能。 用户需要的是入门指南,所以应该覆盖安装、初始化、游戏循环、事件处理、图形绘制等内容。需要结构清晰,分步骤讲解。同时,按照系统指令,要使用正确的中文和LaTeX格式,比如变量用$...$,代码块用三个反引号。 首先,安装部分。需要告诉用户如何用pip安装Pygame,命令是pip install pygame。然后,初始化部分,导入库并初始化,设置屏幕大小和标题。这部分需要代码示例,显示初始化过程。 接下来是游戏循环,这是Pygame的核心。游戏循环需要处理事件、更新游戏状态、绘制画面。要解释每个部分的作用,比如事件循环中处理退出事件,绘制时填充背景色,然后更新显示。需要提到时钟控制帧率,使用clock.tick(60)来维持60FPS。 然后,绘制图形,比如圆形和矩形。这部分需要示例代码,展示如何用pygame.draw中的函数来画图,并说明参数的意义,比如位置、颜色、尺寸等。 还要考虑用户可能的后续问题,比如如何处理键盘输入、加载图像、播放声音等。这些可以作为相关问题列出,帮助用户深入学习。 同时,需要确保LaTeX格式正确,比如变量$screen_width$和$screen_height$用行内公式格式。代码块要正确标注Python语法,并单独成段。引用部分如果之前有的话需要添加,但这里可能没有引用来源,所以可能不需要。 最后,生成相关问题,比如如何添加动画、处理碰撞、创建游戏角色等,这些都是Pygame入门后常见的问题。需要确保问题相关且有引导性,帮助用户继续学习。 检查是否有遗漏的部分,比如事件处理的细节,比如QUIT事件的处理,以及屏幕刷新的方法。确保代码示例能够运行,没有语法错误。同时,用中文自然表达,避免技术术语过于复杂,适合新手理解。 总结步骤:安装、初始化、游戏循环、事件处理、图形绘制、退出处理。每个部分配以代码和解释。最后列出相关问题,引导用户深入学习。</think># Pygame入门指南 ### 一、环境搭建 安装命令: ```bash pip install pygame ``` ### 二、基础框架 ```python import pygame # 初始化引擎 pygame.init() # 设置窗口尺寸为800x600像素 screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("我的第一个游戏") # 游戏主循环 running = True clock = pygame.time.Clock() # 创建时钟对象控制帧率 while running: # 1. 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 2. 更新游戏状态 # 3. 渲染画面 screen.fill((0, 0, 0)) # 用黑色填充背景 pygame.draw.circle(screen, (255, 0, 0), (400, 300), 30) # 绘制红色圆形 # 4. 更新显示 pygame.display.flip() clock.tick(60) # 限制60帧/秒 pygame.quit() ``` ### 三、核心概念解析 1. **坐标系系统**:窗口左上角为原点$(0,0)$,向右为$x$轴正方向,向下为$y$轴正方向 2. **颜色表示**:使用RGB元组格式,如$(255,0,0)$表示红色 3. **游戏循环**:每秒执行约60次的循环结构,包含: - 事件处理(输入检测) - 游戏逻辑更新 - 画面渲染 ### 四、基础图形绘制 ```python # 绘制矩形(左上角坐标,宽高) pygame.draw.rect(screen, (0,255,0), (100,100, 50, 80)) # 绘制线段(起点,终点) pygame.draw.line(screen, (255,255,0), (0,0), (800,600), 5) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码海探幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值