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 库的基础 ...
随机推荐
- leetcode腾讯精选练习之最长公共前缀(九)
最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower"," ...
- React Native 开发
摘自:<React Native 开发之 IDE 选型和配置> 一个在不断更新的有关React Native讲解:<江清清的技术专栏> ES5和ES6的区别:<React ...
- Codeforces Round #517 (Div. 2)(1~n的分配)
题:https://codeforces.com/contest/1072/problem/C 思路:首先找到最大的x,使得x*(x+1)/2 <= a+b 那么一定存在一种分割使得 a1 &l ...
- mysql命令行操作大全
Mysql安装目录 数据库目录/var/lib/mysql/配置文件/usr/share/mysql(mysql.server命令及配置文件)相关命令/usr/bin(mysqladmin mysql ...
- XEN 3166
XEN 3166 这题原题是spj,校oj上只用判断yes no,不过也差不多 题意分析之后就是求两个东西: 字典序最小的长度为m的子序列 同时这个字典序严格大于某个字符串 用序列自动机 先尽量相同, ...
- iTOP-4418开发板_重实力_优势突出_有原理图源码开源
核心板参数 尺寸:50mm*60mm 高度:核心板连接器组合高度1.5mm PCB层数:6层PCB沉金设计 4418 CPU:ARM Cortex-A9 四核 S5P4418处理器 1.4GHz 68 ...
- [LC] 1048. Longest String Chain
Given a list of words, each word consists of English lowercase letters. Let's say word1 is a predece ...
- springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题
有时候,当你把你的springboot项目打成可执行的jar,放在linux上启动时,发现启动超级慢: 这往往是因为springboot内置tomcat启动时实例化SecureRandom对象随机数策 ...
- numpy矩阵运算--矩阵乘法
1)元素对应相乘,使用 multiply 函数或 * 运算符来实现 a = np.array([2,2,2])b = np.array([3,3,3]) c1 = a*a c1 array([4, 4 ...
- 【Linux_Shell 脚本编程学习笔记六、shell的数值运算】
1.bc 命令的用法(可以整数也可以小数): bc是 UNIX下的计算器,它也可以用在命令行下面: 例: 给自变量 i 加 1 [root@docker Demo_test]# i= [root@do ...