【Pygame】 游戏开发 基础知识

news2025/1/13 3:07:24

【Pygame】 第一课 游戏开发 基础知识

  • 概述
  • Pygame 的安装
  • Pygame 基础命令
    • pygame.locals 模块
    • pygame.init()
    • pygame.display.set_mode()
    • 案例
  • Pygame 显示文字
    • pygame.font.Font()
    • fill()
    • render()
    • blit()
    • pygame.display.update()
    • 案例
      • 显示英文
      • 显示中文

概述

Pygame 是一个跨平台的 Python 模块, 专为电子游戏设计. Pygame 在已经非常优秀的 SDL 库的基础上增加了许多功能.

在这里插入图片描述

Pygame 的安装

安装命令:

pip install pygame

导入 Pygame 包:

import pygame

在这里插入图片描述

Pygame 基础命令

pygame.locals 模块

pygame.locals模块包括了 pygame 中定义的各种常量.

导入所有常量

from pygame.locals import *

pygame.init()

pygame.init()是启动 pygame 并初始化的命令, 类似 python 中的__init__.

例子:

# 导入模块
import pygame

# 初始化 pygame
pygame.init()

pygame.display.set_mode()

pygame.display.set_mode()是初始化 pygame 窗口的命令.

格式:

pygame.display.set_mode(size=(0, 0), flags=0, depth=0, display=0, vsync=0)

参数:

  • size: 窗口大小 (分辨率), 类型为元组, 分别表示宽和高
  • flags: 额外参数
  • depth: 位深 (色彩深度)
  • display: 显示模式, 可以使用 & 或 | 一次设置 2 种模式
    • pygame.FULLSCREEN: 全屏
    • pygame.DOUBLEBUF: OPENGL 兼容
    • pygame.HWSURFACE: 硬件加速
    • pygame.OPENGL: 可使用 OpenGl 的显示
    • pygame.RESIZABLE: 可调整大小的显示
    • pygame.SCALED: 适应电脑屏幕大小
    • pygame.SHOWN: 可视 (默认)
    • pygame.HIDDEN: 隐藏

例子:

# 显示一个分辨率 600*400 的窗口
screen = pygame.display.set_mode((600, 400))

在这里插入图片描述

案例

import pygame
import sys

# 导入pygame中的常量
from pygame.locals import *

# 初始化pygame
pygame.init()

# 设置游戏窗口的尺寸, set_mode 函数的参数用元组表示尺寸 (width和height)
pygame.display.set_mode((600, 600))

# 捕获游戏的事件
typelist = [QUIT]

while True:
    # 获取事件
    for event in pygame.event.get():
        # 接收到退出事件, 退出程序
        if event.type in typelist:
            sys.exit()  # 退出

Pygame 显示文字

pygame.font.Font()

pygame.font.Font()可以帮助我们来设置字体和字体大小.

格式:

pygame.font.Font(filename, size)

参数:

  • filename: 字体文件路径
  • size: 字体大小

例子:

# 设置字体和字号
myFont = pygame.font.Font(None, 60)

fill()

screen.fill()用于填充 pygame 窗口背景色的命令.

格式:

screen.fill(color, rect=None, special_flags=0)

参数:

  • color: 背景的颜色, RGB
  • rect: 颜色填充的范围
  • special_flags: 额外参数

例子:

screen.fill((0, 0, 200)

render()

Font.render()用于创建文本并转换为图像.

格式:

Font.render(text, antialias, color, background=None)

参数:

  • text: 文字
  • antialias: 反锯齿, True / False
  • color: 颜色, 格式 RGB
  • background: 背景颜色, 默认为 None

例子:

textImage = myFont.render("Hello Pygame", True, (255, 255, 0)

blit()

screen.blit()用于将图像显示到我们要显示的地方.

格式:

screen.blit(source, dest, area=None, special_flags=0)

参数:

  • source: 需要移动的表面 (图像)
  • dest: 目标位置, 类型元组
  • area: 显示面积, 默认为 None
  • special_flags: 额外参数

例子:

screen.blit(textImage, (10, 60))

pygame.display.update()

pygame.display.update()用于更新显示.

案例

显示英文

代码:

import pygame
from pygame.locals import *
import sys

yellow = (255, 255, 0)  # 文字颜色
blue = (0, 0, 200)  # 背景颜色

# 初始化 pygame
pygame.init()

# 设置窗口尺寸
screen = pygame.display.set_mode((600, 400))

# 设置字体和字号
myFont = pygame.font.Font(None, 60)

# 将文字转换为图像, 消除锯齿
textImage = myFont.render("Hello Pygame", True, yellow)

# 填充背景
screen.fill(blue)

# 显示文字
screen.blit(textImage, (10, 60))

# 更新显示
pygame.display.update()

# 捕获游戏事件
typelist = [QUIT]

while True:
    # 获取事件
    for event in pygame.event.get():
        # 接收到退出事件, 退出程序
        if event.type in typelist:
            sys.exit()  # 退出

输出结果:
在这里插入图片描述

显示中文

代码:

import pygame
from pygame.locals import *
import sys

yellow = (255, 255, 0)  # 文字颜色
blue = (0, 0, 200)  # 背景颜色

# 初始化 pygame
pygame.init()

# 设置窗口尺寸
screen = pygame.display.set_mode((600, 400))

# 设置字体和字号 (仿宋)
myFont = pygame.font.Font("C:\Windows\Fonts\simfang.ttf", 60)

# 将文字转换为图像, 消除锯齿
textImage = myFont.render("你好 Pygame", True, yellow)

# 填充背景
screen.fill(blue)

# 显示文字
screen.blit(textImage, (10, 60))

# 更新显示
pygame.display.update()

# 捕获游戏事件
typelist = [QUIT]

while True:
    # 获取事件
    for event in pygame.event.get():
        # 接收到退出事件, 退出程序
        if event.type in typelist:
            sys.exit()  # 退出

输出结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络 - 物理层数据链路层大题复习题

文章目录1、在下面给出的TCP/IP层次模型图示中填写空缺处①-⑤的协议名称。2、请写出在OSI的第几层分别处理下面的问题?3、试简述数据链路层的三个基本问题为什么都必须加以解决?4、收发两端之间的传输距离为100km,信号在媒体上的传播速率为2…

网络层协议数据单元-N_PDU

诊断协议那些事儿 关联文章: UDS的OSI模型 ISO14229各Part介绍:第三部分:CAN实施的统一诊断服务(UDSonCAN) UDS诊断网络层ISO15765-2(CAN) 功能寻址的注意事项 文章目录诊断协议那些事儿一、N_…

雅思词汇真经单词共3663个

雅思词汇真经 / Vocabulary for IELTS / 学为贵 赢未来 / 英语真经派学习法 一本书精通雅思词汇 / 刘洪波 编著 / 涵盖:雅思必备核心词汇刘洪波老师原创雅思考点词库 逻辑词群记忆法,一群一群记单词,快速备考无负责 时尚插图,趣味…

Golang实现小型CMS内容管理功能(一):Gin框架搭配Gorm实现增删查改功能

我自己开发了一款在线客服系统,最近一直琢磨把客服系统官网做好。因为访客来的人不少,大部分人可能就是看看官网界面就走了,怎样把这些访客留存下来,去测试试用客服系统,是我一直琢磨的问题。 官网是一个企业的门面&a…

PyQT6 pip install (三) 百篇文章学PyQT

本文章是百篇文章学PyQT的第三篇,本文讲述如何使用PIP安装PyQT6,PyQT6在安装过程中会遇到很多问题,博主在本篇文章中将遇到和踩过的坑总结出来,可以供大家参考,希望大家安装顺利。包括 安装、遇到问题的解决方案、怎么…

卷积运算与卷积核DLC

一、卷积运算 在数学上,卷积的定义是:两个函数在反转和位移后的乘积的积分,其公式表现为: 其中称g为过滤器,f为信号。 但是在深度学习中,卷积并不进行反转,而是直接进行逐元素的乘法和加法&…

【读书笔记】人月神话(一)

后续文章都是从本人的知乎博客上搬迁过来。 在软件领域,布鲁克斯博士的《人月神话》是一本关于大型项目管理的经典之作。这本书不仅对每一个软件行业的项目经理(PM)来说是一本必读读物,对每个软件行业的参与者(程序员,测试人员或者是创业者)…

详解c++---类和对象(三)

目录标题拷贝构造函数为什么会有该函数拷贝构造的特性第一个性质的详解第二个性质详解第三个性质的详解什么时候得自己写拷贝构造函数哪些场景会用到拷贝构造函数运算符重载函数为什么会有运算符重载运算符重载的形式>和>的运算符重载和的运算符的重载-和-的运算符重载运…

用anacnda创建虚拟环境用不用指定python版本

用anaconda创建了python虚拟环境以后,想用pycharm指定这个python解释器。 首先,在我创建虚拟环境并未指定python版本的情况下,在使用anaconda prompt的命令 conda create -n envs_name(未指定python版本)以后&#xff…

智能油井在线监控解决方案,第一时间掌握所有动态

随着物联网、云计算等技术的不断革新,物联网技术已经渗透到工业生产的方方面面。例如智能油井;油田地域广阔,分布着大量各种油井,油井开采设备的连续稳定运行是保证石油开采的首要条件。但是油井生产过程中,各井之间距…

C++ 多线程 线程安全队列设计

这是看《C并发编程实战》这本书学的,这里我要为这本书辟谣一下,虽然是这本书前面翻译得很烂,但是从第6章开始,应该是换了个人翻译,虽然还是能难懂,但是难懂的是代码逻辑,而不是语言逻辑&#xf…

MySQL8.0优化 - 锁 - 全局锁、死锁

文章目录学习资料锁的不同角度分类锁的分类图如下其他锁之:全局锁其他锁之:死锁概念产生死锁的必要条件如何处理死锁如何避免死锁学习资料 【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!-哔哩哔哩…

Java——继承下的抽象类与接口

文章目录壹、抽象类贰、接口前言: 我们前一章写了继承性,这一章节,一起来学习Java中的抽象类与接口相关知识。 壹、抽象类 1、定义:用关键字abstract修饰的类称为抽象类(abstract类)。 2、格式&#xff1…

进程调度例题解析

文章目录例题1 一个四道作业的操作系统中,设在一段时间内先后到达6个作业,它们的提交时间和运行时间见表例题2 一个具有两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度采用以优先数为基础的抢占式调度算法&…

智慧矿山解决方案-最新全套文件

智慧矿山解决方案-最新全套文件一、建设背景二、建设思路智能矿山建设存在的问题1、行业上存在的问题2、承建商存在的问题3、矿井自身存在的问题三、建设方案四、获取 - 智慧矿山全套最新解决方案合集一、建设背景 采矿业是我国国民经济的基础和支柱产业,而矿山智慧…

云安全防护总体架构设计

安全需求和挑战 从风险管理的角度讲,主要就是管理资产、威胁、脆弱性 和防护措施及其相关关系,最终保障云计算平台的持续安全,以及 其所支撑的业务的安全。 云计算 平台是在传统 IT技术的基础上,增加了一个虚拟化层,并…

MobaXterm工具使用/Docker安装Redis/Redisinsight工具使用

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

c++——map和set的使用

目录 一. 关联式容器 二. 键值对 三. 树形结构 Ⅰ. set 1. set的介绍 2. set的模版参数 3. set的构造 4. set的迭代器 5. set的容量 6. set其他操作 7. set的使用代码 Ⅱ. map 1. map的介绍 2. map的模板参数说明 3. map的构造 4. map的迭代器 5. map的容量 6…

Qt OpenGL(二十三)——Qt OpenGL 核心模式-给三角形上色

Qt OpenGL(二十三)——Qt OpenGL 核心模式-给三角形上色 本篇文章本来打算和上一篇文章写到一块的,但是考虑到VAO和VBO的概念是学习OpenGL核心模式绕不开的一个概念,所以单独再写一篇了,并且后面切换到使用Qt封装的VAO和VBO的时候,流程和这个也差不多,所以还是要做到理…

爬虫脚本代理池调度

爬虫脚本代理池调度 有时在使用爬虫或者使用脚本需要频繁访问一个网站,这种时候很容易被服务器给ban掉ip,这种情况就可以使用代理池。从代理池中进行调度获取新的ip进行访问。 使用的是开源免费的python项目地址如下: https://github.com/j…