PyGame基础语法

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
  • 15
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SteveKenny

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

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

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

打赏作者

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

抵扣说明:

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

余额充值