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方法在给定位置上创建圆形。 阅读详情

相关推荐

从牛顿冷却定律到热传导方程:一维热传导方程的物理直觉与数学推导

本文从牛顿冷却定律出发,结合傅里叶热传导定律和能量守恒原理,系统推导了一维热传导方程的数学形式。通过微元分析和物理直觉,揭示了温度随时间变化与空间二阶导数之间的关系,并阐释了热扩散率α的物理意义。文章还探讨了方程的边界条件、数值解法及其在材料科学和工程中的应用,为理解热量传递提供了清晰的物理图像和数学框架。

palm99的专栏 837

Pygame:convert 和 convert_alpha 的简单辨析

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

南淮北安的博客 2万+

永磁同步电机高效标定技术:从理论到实践的全面解析

本文全面解析永磁同步电机高效标定技术,从MTPA标定、弱磁区优化到初始角校准,详细介绍了理论原理和实战技巧。针对新能源汽车应用场景,提供标定系统集成要点和AI辅助优化方案,帮助工程师提升电机性能标定效率与精度。

weixin_28452161的博客 502

4.pygame窗口管理

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

m0_73552311的博客 2219

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

智能体在车联网中的应用:第19天 智能体理论与初步实践 D30:阶段小结——在SUMO中使用TraCI控制预编程智能体

本文介绍了如何将强化学习从算法仿真迁移到交通系统实践,重点讲解了SUMO微观交通仿真平台与TraCI实时控制接口的架构。通过构建一个预编程驾驶智能体,演示了车辆从起点到目标点的导航控制。文章详细解析了TraCI的双向通信机制和事件驱动模型,对比了其与传统RL环境的差异,并提供了完整的Python实现框架,包括路网配置、车辆控制和基于向量场的导航逻辑。该实践为后续开发高级学习型交通智能体奠定了基础。

IT深耕十余载,大道之简 1478

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

芒果YOLO11改进81:主干Backbone篇之DCNv3结构:即插即用|使用pytorch代码实现,并针对YOLO11专门优化模块

芒果YOLO11改进81:主干Backbone篇之DCNv3结构:即插即用|使用pytorch代码实现,并针对YOLO11专门优化模块

包括YOLOv5、YOLOv7、YOLOv8等模型改进 736

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

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

Xiaom_yan的专栏 9500

YOLO26涨点改进 | 全网独家首发 主干改进篇 | TGRS 2025 | RepViT-TD,告别庞大骨干!YOLO26 + RepViT-TD轻量又强大,实现更快更准的小目标检测!

本文提出将RepViT-TD轻量级主干网络应用于YOLO26目标检测框架,以提升小目标检测性能。RepViT-TD通过优化计算资源分配,强化前两层高分辨率特征提取能力,在保持轻量化的同时(仅4.85M参数)显著提升微小目标的检测精度(AI-TODv2数据集AP50达54.6%)。文章详细介绍了三种主干改进方案(RepVit_ldy1/2/3)的代码实现,并提供了完整的YAML配置文件修改指南,使模型能高效部署于边缘设备。实验表明,该方法在计算复杂度(38.19G FLOPs)和检测精度间取得了良好平衡。

Ai缝合怪、助力小伙伴高效发论文 329

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 960

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

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

dxm809的博客 1225

2024阅读AOSP源码的正确打开姿势

在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。

虎哥LoveDroid 2707

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

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

zoujin6649的博客 3万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

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

IT_Mr_guo的博客 3930

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python--写游戏pygame入门一

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

JPing的专栏 6487

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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、付费专栏及课程。

余额充值