Pygame相关
pygame是主要构筑在SDL库基础上的一组Python模块的集合,它使我们能够用Python语言来创建功能完整的游戏和多媒体程序。pygame是高度括平台可移植的,在任何SDL支持的平台上都可以运行(几乎可以在任何平台和操作系统上运行)。
注:SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,可以用来访问底层的音频、键盘、鼠标、摇杆、3D硬件(通过OpenGL)以及2D视频缓冲。它被用在MPEG播放软件、模拟器和很多流行的游戏中,包括获得大奖的Linux版的”Civilization: Call To Power”。
安装Pygame
https://www.pygame.org/wiki/GettingStarted
|
|
导入
|
|
模块
| 模块 | 说明 |
|---|---|
| cdrom | 访问光驱 |
| cursors | 加载光标图像,包含标准光标 |
| display | 控制显示窗口或屏幕 |
| draw | 在Surface上绘制简单的图形 |
| event | 管理事件和事件队列 |
| font | 创建并呈现TrueType字体 |
| image | 保存并加载图像 |
| joystick | 管理游戏手柄设备 |
| key | 管理键盘 |
| pygame.mixer | 音效 |
| mouse | 管理鼠标 |
| pygame.movie | 播放视频 |
| pygame.music | 播放音频 |
| pygame.rect | 管理矩形区域 |
| pygame.sprite | 操作移动图像 |
| sndarray | 用numpy操纵声音 |
| surfarray | 用numpy处理图像 |
| time | 控制时间 |
| transform | 缩放,旋转和翻转图像 |
初始化和退出
|
|
窗口/suiface pygame.display
pygame.display模块用于创建、管理游戏窗口
需要先创建一个窗口。其他的活动都是基于窗口的
|
|
- resolution:指定屏幕的宽和高,默认创建的窗口大小和屏幕大小一致
- flags:标志位
- FULLSCREEN 创建一个全屏窗口
- DOUBLEBUF 创建一个“双缓冲”窗口,建议在HWSURFACE或者OPENGL时使用
- HWSURFACE 创建一个硬件加速的窗口,必须和FULLSCREEN同时使用
- OPENGL 创建一个OPENGL渲染的窗口
- RESIZABLE 创建一个可以改变大小的窗口
- NOFRAME 创建一个没有边框的窗口
- depth:颜色的位深,默认自动匹配
|
|
游戏循环
如果没有循环,窗口无法保持,只能看到一闪而过
一个游戏循环(也可以称为主循环)就做下面这三件事:
- 处理事件
- 更新游戏状态
- 绘制游戏状态到屏幕上
|
|
|
|
坐标系
以左上角为(0,0)点,往右方向为X轴,往下方向为Y轴,单位为像素
矩形区域 pygame.Rect
pygame.Rect是用于存储直角坐标的pygame对象,在游戏中所有可见的元素都是以矩形区域来描述位置的(区别于绘制图形中的矩形)
对象
|
|
前两项描述位置,后两项描述大小
属性
|
|
绘制图形 pygame.draw
|
|
实例
|
|

字体/文本 pygame.font
pygame.font模块将文本打印到窗口
|
|
|
|

图像
|
|
|
|
音频
背景音乐
|
|
filename:音频文件的文件名
该方法用来加载背景音乐,之后调用 pygame.mixer.music.play( ) 方法就可以播放背景音乐(Pygame 只允许加载一个背景音乐在同一个时刻)
音乐文件可以很大,系统以流的形式播放
|
|
|
|
循环播放
|
|
特效声音
要在游戏中播放碰撞、爆炸、语音等音效,需要使用pygame.mixer模块。这个模块支持同时播放多个音效文件,多个文件在多个不同的通道Channel中播放,一个通道一次只能播放一个音效文件。
音效和音乐的区别是:音效要整个文件载入到Sound对象中才能播放,而音乐不用完全载入,而以流的方式播放。
|
|
说了这么多,实际上只需要两句就足够了
|
|
视频 pygame.movie
https://stackoverflow.com/questions/37775635/pygame-movie-missing
该模块已经过时
要在游戏中播放片头动画、过场动画等视频画面,可以使用pygame.movie模块
要播放视频中的音乐,pygame.movie模块需要对音频接口的完全控制,不能初始化mixer模块。因此要这样完成初始化~~
|
|
或者只初始化
|
|
|
|
动画
帧率(Frame rate):每秒钟能够刷新的次数
|
|
|
|
事件
Pygame通过一个事件系统与用户进行交互,以及处理一些系统发生的事件。事件系统包括一个事件队列,其中每一项都是一个Event对象。所有的用户输入和一些系统事件,都会形成一个Event对象被添加到事件队列中。
Event对象有各种不同的类型,通过Event.type属性来区分。不同的类型的Event对象还有不同的其它属性。通过Event.dict属性来查看。
详细:http://www.xefan.com/archives/83586.html
|
|
定时器
每隔多少时间触发一次事件
pygame中的时间是以毫秒(千分之一秒)表示的
|
|
计时器
|
|
冲突
while True: # 程序主循环
for event in pygame.event.get():# 获取事件
if event.type == QUIT:# 判断事件是否为退出事件
pygame.quit()# 退出pygame
sys.exit()# 退出系统
pygame.display.update()# 绘制屏幕内容
参考:
Pygame相关的更多相关文章
- pygame游戏开发-简介
转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...
- Python实战练习_贪吃蛇 (pygame的初次使用)
正如标题所写的那样,我将一步步的完成本次实战练习——贪吃蛇.废话不多说,感兴趣的伙伴可以一同挑战一下. 首先说明本次实战中我的配备: 开发环境:python 3.7: 开发工具:pycharm2019 ...
- Python3+Pygame实现的射击游戏,很流畅,有音效
之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- pyinstaller相关问题 & pygame文件打包成exe文件 & 武装飞船 & 飞机大战
自己照书写了一个飞机大战游戏的python程序,想把它打包成一个exe文件,在查阅相关教程并经过数次尝试后终于成功. 安装打包应用 pyinstaller 在cmd命令窗口下pip install p ...
- centos上安装pygame
安装前依赖包检查及安装 python-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel SDL-devel numpy subversion po ...
- 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 直到现在我们已经学了很多pygame基础知识了,从这篇博客开始我们将会学习pygame中高级部分,更多和精灵 ...
- 【python游戏编程之旅】第三篇---pygame事件与设备轮询
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame中的IO.数据http://www.cnblogs.com/msxh/ ...
- 【python游戏编程之旅】第一篇---初识pygame
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 一.pygame简介 Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础 ...
随机推荐
- redis备忘录
Redis 是一个基于内存的高性能key-value数据库.Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数 ...
- 元组(tuple)的用途(基础)
>>>a = 123,456,'jia',['jia','xiang'] >>>a (123, 456, 'jia', ['jia', 'xiang']) 这个带括 ...
- Opencv笔记(七)——访问与操作像素
一.获取矩阵的元素 1.获取三维矩阵img[i,j]处的元素 (b,g,r) = image[i,j],image大小为:MxNxK. 2.获取三维矩阵的子矩阵的全部元素 newimage = ima ...
- Python数据分析与展示第2周学习笔记(北理工 嵩天)
单元4:Matplotlib库入门 matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式 import matplotlib.pyplot as plt # -*- cod ...
- 七种常见经典排序算法总结(C++实现)
排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...
- day02-文件操作
文件操作. 1,文件路径:d:\python一定要学好.txt 2,编码方式:utf-8 gbk .... 3,操作模式:只读,只写,追加,读写,写读..... 不论哪种方式都只能执行一次.例如r模式 ...
- Fiddler发送get post测试 笔记
0 环境 系统环境:win7 1 操作 1 post 类似 2 get
- [LC] 437. Path Sum III
You are given a binary tree in which each node contains an integer value. Find the number of paths t ...
- Jenkins+maven+jmeter+eclipse搭建自动化测试平台
一.准备工作 1.jmeter准备测试脚本 2.maven环境配置 3.eclipse创建maven项目 4.Jenkins集成项目 二.jmeter准备测试脚本 使用jmeter准备测试脚本(不管录 ...
- UMLet的使用与类图的设计
本实验是为后续实验做准备的.在本书中,各个程序实例都要画类图,所以读者必须掌握用某种UML建模工具来画类图,本书选择 UMLet 作为 UML 的建模工具.实验目的本实验的主要目的如下. 理解类的基本 ...