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 库的基础 ...
随机推荐
- BBS配置
BBS配置 一.url路由 """BBS URL Configuration The `urlpatterns` list routes URLs to views. F ...
- 12. docker 网络 docker network (docker 网络)
1. 环境准备 编写 Vagrantfile 为 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.require_version "> ...
- 八皇后问题 2n皇后问题
Description 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某 ...
- matlab 启动图标
matlab 启动图标 cat /usr/share/applications/Matlab.desktop [Desktop Entry] Type=Application Name=Matlab ...
- dubbo通信协议对比
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档 http://dubbo.io/User+Guide-zh.htm dubbo共支持如下几种通信协议: ...
- 解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
WinForm 启动时隐藏窗体最简单有效的办法是重写 CreateParams protected override CreateParams CreateParams { get { base.Vi ...
- xcode垃圾目录以及Mac隐藏显示文件快捷键
~/Library/Developer/Xcode/DerivedData 显示:defaults write com.apple.finder AppleShowAllFiles -bool tru ...
- 虚拟环境(virtualenv)
为什么需要虚拟环境: 到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中.但是这样有一个问题,就是如果你 ...
- Lua-文件操作
简单模式和完全模式 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作. 完全模式(complete model) 使用外部的文件句柄来实现.它 ...
- 吴裕雄--天生自然 R语言开发学习:R语言的简单介绍和使用
假设我们正在研究生理发育问 题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-).我们感兴趣的是体重的分 布及体重和月龄的关系. 可以使用函数c()以向量的形式输入月龄和体重数据,此函 数 ...