python pygame 入门 (一)

Python游戏开发入门:从零到一构建2D游戏,掌握Pygame核心概念与实践 游戏开发是计算机图形学与实时交互系统的重要应用领域,其核心在于通过游戏循环(Game Loop)实现状态更新与画面渲染,从而创造沉浸式体验。对于初学者和独立开发者而言,选择合适的开发工具至关重要。Python凭借其简洁语法和丰富生态,成为快速原型设计和2D游戏开发的高效选择。Pygame作为成熟的2D游戏开发框架,封装了窗口管理、事件处理、图形绘制等底层细节,让开发者能聚焦于游戏逻辑本身。通过理解Surface(显示表面)、Sprite(精灵)系统、碰撞检测等核心概念,开发者可以高效构建可交互的游戏世界。本 阅读详情

pygame:

ygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合。并且只能开发2D游戏

安装:

可以从http://www.pygame.org/wiki/GettingStarted下载安装
也可以用pip: 
python -m pip install pygame

不知道为何去掉pip -m后会超时异常

检验安装成功的方法:

IDE中: 

import pygame
print(pygame.ver)

使用pygame

import pygame
from pygame.locals import * #导入常用的常量
pygame.init()#初始化

初始化后就可以方便的使用pygame了!

简单的例子:

弹窗 蓝色背景  白色字:

import pygame
from pygame.locals import *   #引入pygame中的所有常量
pygame.init() #初始化
screen = pygame.display.set_mode((600,500)) #创建窗口 大小为600*500

#打印字体
font = pygame.font.Font(None,60)  #创建字体对象,None表示默认字体
white = (255,255,255)#字体颜色
blue = (0,0,200)#背景颜色
#在内存中创建文本图像,然后将文本当作一个图像来渲染。
textImage = font.render("Hello pygame",True,white)
#事件循环
while True:
    #退出事件
    for event in pygame.event.get():
        if event.type in (QUIT,KEYDOWN):
            exit()
    #显示
    screen.fill(blue)
    screen.blit(textImage,(100,100))
    pygame.display.update()
    Pygame的最重要部分是surface。就把surface想当成一张白纸吧。你要用对一个surface做许多的事——你可以在它上面画线,给它的部分填充颜色,把图像拷进去或者拷出来,设置或者读取它上面的某个单独的像素的颜色值。一个surface可以是任何大小(可以理解)并且你要多少就有多少(也可以理解)。有一个surface是特别的——你用pygame.display.set_mode()创建的那一个。这个display surface代表了屏幕;你对它做的任何事情都会呈现在用户屏幕上。你只能有一个这玩意——这是SDL的一个限制,而不是pygame的。

    pygame.display.set_mode():创建了一个窗口,set_mode会返回一个Surface对象,代表了在桌面上出现的那个窗口,三个参数第一个为元祖,代表分 辨率(必须);第二个是一个标志位,如果不用什么特性,就指定0;第三个为色深。当我们把第二个参数设置为FULLSCREEN时,就能得到一个全屏窗口了

    pygame.font.Font():create a new font object from a file

    font.render():draw text on a new surface;render方法的第一个参数是写入的文字内容;第二个是布尔值,说明是否开启抗锯齿;第三个是字体本身的颜色;第四个是背景的颜色。如果不想有背景色,也就是让背景透明的话,可以不加第四个参数。

    screen.blit(textImage,(100,100)):绘制位图 ,第一个参数为加载完成的位图,第二个参数为起始坐标

    pygame.display.update()就是把surface对象不断地显示到屏幕 更新窗口

另一个例子:图片加载与简单事件:

     
background_image_filename ='sushiplate.jpg'#背景图
mouse_image_filename='fugu.png'#光标图
import pygame
from pygame.locals import * #导入常用的函数和常量
from sys import exit#借用sys模块的exit函数用于退出

pygame.init()
screen = pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("Hello World!")#窗口标题
background = pygame.image.load(background_image_filename).convert()
mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha()
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#除以2是为了使图片中心与光标位置对齐,否则默认以光标位置为原点
    y-=mouse_cursor.get_height()/2
    screen.blit(mouse_cursor,(x,y))#将光标移动到新的位置
    pygame.display.update()
      image.load()加载图片
      convert函数是将图像数据都转化为Surface对象,每次加载完图像以后就应该做这件事件(事实上因为 它太常用了,如果你不写pygame也会帮你做);convert_alpha相比convert,保留了Alpha 通道信息(可以简单理解为透明的部分),这样我们的光标才可以是不规则的形状。
      convert()所指的“格式”并非指文件格式工(如png,jpeg,gif),它是所谓的“像素格式”。它代表了一个surface记录一个特定像素的颜色的方法。如果surface格式跟显示格式不一样,那SDL就要在每次blit的时候去转化它——这是个相当费时的过程。不用关心解释,只要注意到如果想在blit之外获得速度,那你就需要convert()。
    while True:循环 看到crossin 中一段比较形象的话:
    “如果你看过泥土动画,那么就可以把整个游戏过程想象成拍摄泥土动画的过程:每一次,screen.blit()相当于去把人偶、布景移动一点点位置,pygame.display.update()则是按下快门拍下一帧新的画面。而if event.type == pygame.QUIT:就是在判断,导演是不是喊停收工了。这一切都由计算机在很短的时间内处理,以至于玩家感觉是连贯的。”

 







【游戏开发实战:随机生成图像位置】Pygame是一款基于Python语言的游戏引擎,它可以轻松地创建各种类型的游戏和交互式应用程序。在本篇教程中,我们将学习如何... 在主循环中,我们首先检查是否有“QUIT”事件发生,如果用户关闭了游戏窗口,我们就停止游戏。最后,我们使用Pygame的display.flip方法将新的元素显示在屏幕上。在draw函数中,我们使用随机圆形的半径、位置和颜色的随机值来创建一个新的Surface对象。这个例子中,我们每隔1秒钟在屏幕上创建一个新圆形,直到用户关闭了游戏窗口。我们使用Pygame中的Surface对象来绘制图像,可以使用Pygame提供的draw.circle方法在给定位置上创建圆形。 阅读详情

相关推荐

ROS2学习笔记(二)-- 多机通讯原理简介及配置方法

简单介绍ROS2多机通信原理以及配置注意事项

aibingjin的博客 1万+

Pygame:convert 和 convert_alpha 的简单辨析

对于普通图像的显示效果, image = pygame.image.load(image) image = pygame.image.load(image).convert 显示效果是一样的 但是 使用 convert 可以转换格式,提高 blit 的速度 Convert()所指的“格式”并非指文件格式工(如 png,jpeg,gif),它是所谓的“像素格式”。它代表了一个surface记录...

南淮北安的博客 2万+

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

4.pygame窗口管理

pygame入门教程(4)——窗口管理(拓展)

m0_73552311的博客 2219

educoder数字逻辑实训:寄存器设计与应用(Logisim)

第1关:基本寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位基本寄存器,要求上升沿触发,具有异步复位功能。 第2关:移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位右移移位寄存器,要求上升沿触发,具有异步复位功能。 第3关:循环移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位循环右移移位寄存器,要求上升沿触发,具有异步复位功能以及并行数据同步加载功能。 第4关:并行..

qq_52209002的博客 1万+

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

6.pygame图片移动

我们把Game类的main函数中的while循环中的blit函数改成。上节课我们学习了把图片绘制到屏幕上的函数,上节课应该已经猜到只要改变传入的xy的参数即可。我们先在Game类的__init__的初始化的函数中添加一个自定义速度的变量和初始的x位置。接着我们在Game类的main函数中的while循环中添加一个增加x的操作。我们把Game类的main函数中的while循环中的blit函数改成。我们在我们要在Game类的main函数中的while循环中添加。这个函数用来改变xy的位置,正数为加,负数为减。

m0_73552311的博客 2599

论文解读--Phase Noise in FMCW Radar Systems

相位噪声是现代雷达、通信、光谱和计量系统的基本性能参数之一。本文提出了一种适用于FMCW雷达系统的相位噪声理论。导出了一个新的设计方程,用于确定雷达系统中允许的源相位噪声电平的最大界。分析了在传输延迟小于参考振荡器相干时间时,相干混频引起的非线性相位噪声去相关函数;讨论了在传输延迟大于参考振荡器相干时间时,目标响应的频谱展宽。提出了收发链中各子系统的影响,并讨论了一种新的ADC相位噪声模型。介绍了相位噪声建模技术,然后将锁相环频率合成器与低噪声频率合成器进行比较,以演示减少相位噪声边带以改善检测和跟踪性能。

奔袭的算法工程师 3767

python自学——pygame基础——关于pygame中的图像位置

任务目标:将图片放在屏幕正中央的两种方法 方法一:数学方法 使用方法:使用image.get_rect()方法获得图像的长(.right)和宽(.bottom),利用数学方法计算出中心点位置并赋值给图像放置位置。 实现代码: import pygame,sys pygame.init() screen =pygame.display.set_mode([640,480]) pygam...

Xiaom_yan的专栏 9500

Spring AI 项目实战(十八):Spring Boot + AI + Vue3 + OSS + DashScope 实现高效语音识别系统(附完整源码)

本文介绍基于 Spring Boot AI 集成阿里云 OSS 与 DashScope 语音识别 API 的高效语音识别系统。该系统通过云端存储音频文件,解决传统本地存储的性能瓶颈与存储压力,支持同步 / 异步语音转文本,实现文件自动生命周期管理。文中详述技术选型、架构设计、核心代码实现(含前后端及配置)、部署流程,展现其高并发处理、可靠文件管理能力,适用于客服、教育等企业级场景,为语音识别应用提供实用解决方案。

博客 1537

【硬件工程师面经整理18_Smith圆图】

若文中任何内容侵犯了您的合法权益,请相关权益人及时与我联系,我将立即进行核实并采取适当措施,包括但不限于删除相关内容或更新文章以消除影响。**在Smith圆图上,源阻抗表示为圆心,而负载阻抗表示为圆图上的一个点。具体来说,通过将负载阻抗在Smith圆图上移动到特定位置,使其与传输线特性阻抗形成纯电阻或纯电抗的组合,从而实现匹配。例如,反射系数表示为Smith圆图上的一个点,而驻波比则表示为圆图上两个点之间的距离。Smith圆图是用于阻抗匹配和网络分析的工具,它是一种将复阻抗表示为坐标的图形。

LeeYLong的博客 652

Python之pygame,从入门到精通(一)

Python之pygame,从入门到精通(一) Pygame的历史 Pygame是一个利用SDL库的写就的游戏库,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam Lantinga的大牛写的,据说他为了让Loki(致力于向Linux上移植Windows的游戏的一家大好人公司,可惜已经倒闭,唉好人不长命啊……)更有效的工作,创造了这个东东。 SDL是用C写的,...

dxm809的博客 1225

效果炸裂_安装midscene_copw基于midscene操作电脑_基于视觉的软件测试执行_MIDSCENE的安装和使用---AI大模型应用探索0012

摘要:本文介绍了如何通过安装MidSceneJS来增强Copaw的屏幕操作能力。首先需要安装Node.js和npm,并配置淘宝镜像源加速安装。然后全局安装MidScene CLI工具(npm install @midscene/cli -g)。接着配置视觉大模型服务,通过设置环境变量指定模型API密钥、名称、基础URL和家族类型(如qwen3.5-27b),配置文件需存放在C:\Users\Administrator.copaw目录。安装成功后,MidScene已能成功识别并操作屏幕,使用效果良好。文中还提

添柴程序猿的专栏 639

Python游戏编程入门(一)——初识Pygame

Pygame是一组功能强大而有趣的模块,可用于管理图形、动画乃至声音,可以让我们很轻松的开发复杂的游戏。通过使用Pygame来处理在屏幕上绘制图像等任务,不用考虑众多繁琐而艰难的编码的工作,而是将重点放在程序的高级逻辑上。 安装Python 官网地址:https://www.python.org/downloads/ 本系列博文使用的是Python3.6.8 64位系统可以下载Windo...

zoujin6649的博客 3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python中的pygame游戏模块入门(一)

初始pygame 首先我们知道,pygame是Python专门用来制作游戏的一个模块,那么它有那些功能呢? • 它可以显示文字,绘制图形(比如圆形、三角形等),显示图片,实现动画效果,能够与键盘、鼠标、游戏手柄等外设交互,播放声音,支持碰撞检测。 同样,pygame模块中有很多子模块,比如: • pygame.cursors,用来加载光标的模块; • pygame.display,用来控制显示...

IT_Mr_guo的博客 3930

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python--写游戏pygame入门一

1、安装pygame pygame下载地址:http://www.pygame.org/download.shtml 2、pygame具有的模块名 模块名 功能 pygame.cdrom 访问光驱 pygame.cursors 加载光标 pygame.display 访问显示设备 pygame.draw 绘

JPing的专栏 6487

Python 游戏编程入门:用 Pygame 打造坦克大战(一)基础框架搭建

本系列文章将带你从零开始,使用 Python 和 Pygame 库完整实现经典游戏——坦克大战。这是第一篇,主要讲解环境搭建、面向对象分析和项目框架搭建。适合有 Python 基础想学习游戏开发的初学者。

for happy の road 422

Python pygame游戏界面设计入门(一)(新人上手强烈建议!内容丰富)

Pygame 窗口的创建和基本设置

sjl_csdn1的博客 1934

python编程入门到实践学习笔记——外星人入侵游戏pygame(一 武装飞船)

python编程——测试代码unit test工具文章概述测试函数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 文章概述 每个程序员都要犯错,因此都必须经常测试其代码,在用户发现问题前找出它们。本文章记录笔记为更好学习Pytho

xiakejiqiren的博客 5608

用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板1)

用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板1) 从这次开始,我会由简单到困难(其实也不会困难到哪里去)讲几个例程,每一个例程都是我自己写(或者修改,那样的话我会提供原始出处)的,都具有一定的操作性和娱乐性。例程中汇尽量覆盖到以前所讲的pygame中方方面面,如果看到哪一步不明白,那就再回去复习复习,基本没有人会看一遍什么都记住什么都掌握的,重复是学习之母,实践是掌握一

专注IT 4602

用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板2)

用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板2) 趁热打铁赶快把我们这个画板完成吧~ ……鼠绘无能,不准笑!所有评论中“噗嗤”、“画的好搓啊”、“画的好棒啊”等,都会被我无情扑杀掉!但是能告诉我怎样画可以更漂亮的话,绝对欢迎。 上次讲Brush的时候,因为觉得太简单把color设置跳过了,现在实际写的时候才发现,因为我们设置了颜色需要对刷子也有效,所以实际上

专注IT 1679

用Python和Pygame写游戏-从入门到精通(实战一:涂鸦画板)

import pygame from pygame.locals import * import sys import math class Brush(): def __init__(self, screen): self.screen = screen self.color = (0, 0, 0) self.size = 1

u012568278的博客 925

用Python制作 “打飞机”小游戏(一)项目规划与pygame安装

本项目参照《python编程:从入门到实战》项目一,在其基础上进行修改和丰富 游戏设想 玩家控制一艘出现在屏幕底部的飞船,攻击从屏幕上方向下移动的敌机群。左右键移动飞船,空格发射。每消灭一群敌机,难度升级(速度更快)。 pygame安装 (Windows系统) 1. 默认已安装pip,可打开终端窗口,执行 python -m pip --version 若输出类似如下则已安装pip...

zhr1030635594的博客 455

pygame游戏作品代码_喜欢玩游戏么?来试试用python写个游戏

引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,项目来自《Python编程从入门到实践》(本文将原项目中的部分错误进行修改完善,PS:强烈推荐这本书,真的很赞),来感受下其中的有趣之处。本次开发的游戏叫做alien invasion。安装pygam...

weixin_39566493的博客 1097
上一篇: Python 面向对象
下一篇: Python nltk Learning to classify texts
BeforeEasy
博客等级 码龄10年 92粉丝 207原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值