python pygame库的略学

这篇具有很好参考价值的文章主要介绍了python pygame库的略学。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


概述

pygame 是为开发2D游戏而设计的Python跨平台模块,该模块中定义了很多接口,开发人员使用这些接口可以方便时间游戏开发的常用功能。例如,图形和图像绘制,播放音频等。


提示:以下是本篇文章正文内容,下面案例可供参考

1. pygame的初始化和退出

在使用Pygame开发游戏或图形界面应用时,初始化和退出是整个程序生命周期中非常关键的两个步骤。其初始化和退出的函数为:

函数 作用
init() 一次性初始化pygame的所有模块,故开发程序时开发人员无须单独调用,每个子模块的初始化方法,可以直接使用子模块
quit() 卸载之前被初始化的所有pygame模块,在python程序退出前,解释器会释放所有模块,quit()函数并非必须调用,但程序开发秉持谁申请,谁释放的原则,因此程序开发人员应当在需要时主动调用quit()函数卸载所有模块资源

代码示例:

import pygame

def main():
    # 初始化Pygame所有模块
    pygame.init()

    # 这一步骤会加载所有必要的系统资源,
    # 包括音频、视频、事件处理等支持,确保后续能正常使用Pygame的功能。

    # ... 其他游戏相关的设置和循环代码 ...

    # 游戏主循环结束后,进行资源清理
    pygame.quit()

    # 可选地,如果你希望彻底清理Pygame的所有资源,还可以调用以下命令
    # pygame.display.quit()  # 关闭显示部分,不卸载所有模块
    # sys.exit()  # 强制退出整个程序,但这不是必需的,因为程序结束时Python会自动清理资源

# 调用main函数启动程序
if __name__ == "__main__":
    main()

2. 创建游戏窗口

由于命令行窗口中无法绘制图形,若要开发带有图形界面的游戏,程序应先创建一个图形界面窗口,pygame通过displag子模块创建图形界面窗口。常见的函数有:

函数 作用
set_mode() 初始化游戏窗口
set_capyion() 设置窗口标题
update() 更新屏幕显示内容

(1)set_mode()

语法:

set_mode(resolution=(0,0),flages=0,depth=0)->Surface
参数 解释
resolution 以元组的形式储存,主要指窗口的分辨率,指定图形窗口的宽和高,单位为像素。
flages 标志位,用于设置窗口特性,默认为0
depth 色深,该参数只取整,取值范围为[8,32]

(2)set_capyion()

set_capyion(title,icontitle=None)  ->None
参数 解释
title 字符类型
icontitle 设置显示在任务栏上的程序标题,一般默认为None,与title一致

(3)update()

用于刷新窗口,以显示修改后的新窗口。


代码示例:

# 导入模块
import pygame

# 定义窗口高度和宽度、颜色
WIN_WIDTH = 658
WIN_HEIGHT = 243
BG_COLOR = (125,125,0)
def main():
    # 初始化模块
    pygame.init()
    # 创建窗体,即创建Surface
    WINSET=pygame.display.set_mode((WIN_WIDTH,WIN_HEIGHT))
    # 为窗口填充背景色
    WINSET.fill(BG_COLOR)
    # 设置窗口标题
    pygame.display.set_caption('小游戏')
    # 刷新窗口
    pygame.display.update()
    # 卸载所有模块
    pygame.quit()

if __name__ =='__main__':
    main()

3. 游戏循坏与游戏时钟

游戏启动一般时由玩家手动关闭,但目前的程序在开启图形窗口并设置标题后便退出,这是因为程序已经执行完毕,若要使游戏继续执行,需要在程序中添加一个无限循环。

在pygame.display.update()之后添加循环代码,程序会一直保持执行。一般情况下,计算机上1s绘制60帧便能够达到非常连续,高品质的动画效果。换句话说,就是窗口刷新图像的频率只要不低于每秒60帧。过高意味着超高的负荷,为了降低循环执行频率,需要在程序设置时间钟(游戏时间钟)。

代码示例:

# 导入模块
import pygame

# 定义窗口高度和宽度、颜色
WIN_WIDTH = 658
WIN_HEIGHT = 243
BG_COLOR = (125,125,0)

FPS=60
def main():
    # 初始化模块
    pygame.init()
    # 创建窗体,即创建Surface
    WINSET=pygame.display.set_mode((WIN_WIDTH,WIN_HEIGHT))
    # 为窗口填充背景色
    WINSET.fill(BG_COLOR)
    # 设置窗口标题
    pygame.display.set_caption('小游戏')
    # 设置游戏时间钟,创建Colock对象
    FPSCOLOCK = pygame.time.Clock()
    # 刷新窗口
    pygame.display.update()
    # 利用无线循环
    i=0
    while True:
        i=i+1
        print(i)
        # 控制帧率
        FPSCOLOCK.tick(FPS)

    # 卸载所有模块
    pygame.quit()

if __name__ =='__main__':
    main()

注意:这是一个死循环代码


4. 图形和文本绘制

图形化窗口时绘制文本和图形的前提,创建窗口后便可在其中绘制文本、图形等元素。

(1)图形绘制

  1. 加载图片
    将图片读取到程序中,该步骤需要使用pygame库中的image模块的load()函数。语法如下:
load(filename) ->Surface
参数 解释
filename 待加载图片的文件名
  1. 绘制图片
    绘制图片本质上时将一个Surface对象叠加在另一个Surface对象上,这种不同尺寸的叠加可以通过blit()函数完成,语法如下:
blit(source,dest,area=None,special_flags=0) -> Rect
参数 解释
source 接收被绘制的Surface对象
dest 接收一个表示位置的元组,该元组指定left和top2个值,left和top分别表示图片距离窗口左边和顶部的距离,可接收一个表示矩形的元组(left,top,width,height)(left和top表示矩形位置,width和height表示矩形宽高)
area 可选参数,用于设置矩形区域
special_flags 标志位

(2)文本绘制

pygame的font模块提供了一个Font类,使用该类可以创建系统字体对象,进而实现游戏窗口中文字的绘制。

  1. 创建字体对象
    调用font模块的Font()函数可以创建一个字体对象,Font()函数语法如下:
Font(filename,size) ->Font
参数 解释
filename 设置字体对象的字体(字体的位置路径)
size 设置字体对象的大小

拓展
也可以通过font模块中的SysFont()函数创建一个系统字体对象。SysFont()函数语法如下:

SysFont(name,size,bold=False,italic=False) ->Font
参数 解释
name 系统字体名称,可通过pygame.font.get_fonts()函数获取当前操作系统所有的字体列表
size 字体大小
bold 是否设置为粗体,默认为Flase,表示不设置
italic 是否设置为斜体,默认为Flase,表示不设置
  1. 渲染文本内容
    渲染是计算机绘图中使用的名词,经渲染后计算机中会生成一张图像(SurFace对象)。渲染的函数render()语法如下:
render(text,antialias,color,background=None) ->Surface
参数 解释
text 文字内容
antialias 是否抗锯齿(抗锯齿会让文字看起来更平滑)
color 文字颜色
background 背景颜色
  1. 绘制渲染到游戏主窗口

绘制文本图片同样使用Surface的blit()方法。


代码示例:

# 导入模块
import pygame,time

# 定义窗口高度和宽度、颜色
WIN_WIDTH = 658
WIN_HEIGHT = 243
# 设置颜色变量
BG_COLOR = (125,125,0)
MS_COLOR=(95,200,255)
MSGBG_COLOR=(23,78,20)


FPS=60
def main():
    # 初始化模块
    pygame.init()
    # 创建窗体,即创建Surface
    WINSET=pygame.display.set_mode((WIN_WIDTH,WIN_HEIGHT))
    # 为窗口填充背景色
    WINSET.fill(BG_COLOR)
    # 设置窗口标题
    pygame.display.set_caption('小游戏')

    # 加载图片
    image=pygame.image.load('D:/Software/pycharm/网页请求/小游戏/image/wallhaven-j5mj3w_1920x1080.png')
    # 绘制图片
    WINSET.blit(image,(0,0))
    # 创建字体对象
    BASICFONT=pygame.font.Font("D:/Software/字体/思源黑体/字体文件/SourceHanSansCN-Bold.otf",25)
    # 渲染字体
    msg_surf=BASICFONT.render('初始化…',True,MS_COLOR,MSGBG_COLOR)
    # 绘制渲染到游戏窗口
    WINSET.blit(msg_surf,(0,0))
    # 设置游戏时间钟,创建Colock对象
    FPSCOLOCK = pygame.time.Clock()
    # 刷新窗口
    pygame.display.update()
    # 睡眠十秒
    time.sleep(10)
    # 利用无线循环
    i=0
    while True:
        i=i+1
        print(i)
        # 控制帧率
        FPSCOLOCK.tick(FPS)

    # 卸载所有模块
    pygame.quit()

if __name__ =='__main__':
    main()

5. 元素位置控制

前文绘制的图像和文本都在(0,0)位置,也就是图形窗口的原点。但游戏中的文字和图片可能出现在窗口的任意位置,若想要准确地放置图片和文本,需要先掌握pygame图形窗口的坐标体系和pygame的Rect类等知识。

(1)pygame图形窗口的坐标体系

定义如下:

  • 坐标原点在游戏窗口的左上角
  • x轴与水平方向平行,以向右为正
  • y轴与垂直方向平行,以向下为正

(2)Rect类

用于描述和控制可见对象(文本、图片等)在pygame窗口中的位置显示
类的构造方法如下

__init__(x,y,width,height) ->Rect

6. 动态效果

大多数游戏都涉及动态效果;实现动态效果的原理是文本或者图片的更换,位置的改变和屏幕的刷新。基础的动态效果分为:

  • 多次修改Surface对象绘制的位置并连续绘制、刷新 ,实现移动效果
  • 在同一位置绘制不同的Surface对象,实现动画效果。
  • 连续绘制不同Surface对象的同时,修改绘制的位置,实现移动的动画

总结

本次章节是为初学者了解pygame模块提供的,为了更有效的学习pygame内容,我也是为此总结了一章节,制作小游戏的七大重要步骤,在此我只做出了前六步解释,最后一步是 : 事件与事件处理
下期为最后一步做出详细解释以及拓展小游戏案例
谢谢大家的支持!🌈🌈文章来源地址https://www.toymoban.com/news/detail-846244.html

到了这里,关于python pygame库的略学的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 游戏开发与 Pygame

    第一章. Python 简介 Python 简介和历史 Python 特点和优势 安装 Python 第二章. 变量和数据类型 变量和标识符 基本数据类型:数字、字符串、布尔值等 字符串操作 列表、元组和字典 第三章. 控制语句和函数 分支结构:if/else 语句 循环结构:for 和 while 循环 函数 参数传递与返回值

    2024年04月17日
    浏览(48)
  • 学习 Python 之 Pygame 开发坦克大战(一)

    Pygame是一组Python用于编写视频游戏的模块。Pygame在优秀的SDL库上添加了功能。可以让我们使用python语言创建功能齐全的游戏和多媒体程序,并且Pygame是高度可移植的,几乎可以在所有平台和操作系统上运行。 官方文档 函数名称 作用 返回值 pygame.display.init() 初始化展示模块

    2024年02月02日
    浏览(46)
  • 学习 Python 之 Pygame 开发坦克大战(二)

    坦克大战游戏包含很多个物体,现在要对这些物体进行总结 类名 包含的操作 包含的属性 敌方坦克类 射击,移动,显示 生命,速度,伤害,方向,类型 我方坦克类 射击,移动,显示 生命,速度,伤害,方向,装甲,等级 子弹类 移动,显示 方向,伤害,发射源,速度 墙壁

    2024年02月02日
    浏览(50)
  • 【python】之pygame模块,游戏开发【基础篇】

    什么是pygame? Pygame 是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,具有免费、开源,支持多种操作系统,具有良好的跨平台性等优点。它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等

    2024年02月08日
    浏览(56)
  • Python -- 利用pygame库进行游戏开发基础

            Pygame是一个基于Python的游戏开发库,它提供了一系列的工具和接口,使开发人员能够轻松地创建各种类型的游戏,包括2D游戏和简单的3D游戏,主要是为了开发2D游戏而生。具有免费、开源,支持多种操作系统,具有良好的跨平台性等优点。 在开始学习Pygame之前,您

    2024年01月22日
    浏览(57)
  • 【附源码】使用python+pygame开发消消乐游戏

    消消乐小游戏相信大家都玩过,大人小孩都喜欢玩的一款小游戏,那么基于程序是如何实现的呢?今天带大家,用python+pygame来实现一下这个花里胡哨的消消乐小游戏功能,感兴趣的朋友一起看看吧 目录 一、环境要求 二、游戏简介 三、完整开发流程 1、项目主结构 2、详细配

    2024年02月04日
    浏览(61)
  • 学习 Python 之 Pygame 开发魂斗罗(十六)

    在上次的博客学习 Python 之 Pygame 开发魂斗罗(十五)中,我们加入了boss,至此,魂斗罗的主体部分已经完成了,接下来就是在其他地方加入一点敌人,设置进场动画,胜利动画,失败动画和音效了,在这篇博客中,我们加入音效和加入进场动画。 下面是图片的素材和源码,

    2024年02月05日
    浏览(53)
  • 学习 Python 之 Pygame 开发魂斗罗(十五)

    在上次的博客学习 Python 之 Pygame 开发魂斗罗(十四)中,我们加入桥和修复了一些问题,在这篇博客中我加入boss。 下面是图片的素材和源码,我把源码也放到了网盘 链接:https://pan.baidu.com/s/1X7tESkes_O6nbPxfpHD6hQ?pwd=hdly 提取码:hdly 网盘中,代码如下 Teach是博客中发的代码,每

    2024年02月03日
    浏览(51)
  • Python Pygame游戏开发教程正式发布(非常详细)

    Pygame 是一款专门为开发和设计 2D 电子游戏而生的、免费开源的 Python 软件包/模块,它支 Windows、Linux、Mac OS 等操作系统,具有良好的跨平台性 Pygame 在 SDL 的基础上开发而成,它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏

    2024年04月13日
    浏览(46)
  • 学习 Python 之 Pygame 开发魂斗罗(三)

    在上次的博客学习 Python 之 Pygame 开发魂斗罗(二)中,我们完成了角色的创建和更新,现在具体实现一下更新函数中的角色状态函数 下面是图片的素材 链接:https://pan.baidu.com/s/1X7tESkes_O6nbPxfpHD6hQ?pwd=hdly 提取码:hdly 1. 角色站立 在写角色站立函数时,先把其他状态函数注释了

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包