- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章一篇文章带你了解Python中的游戏开发模块pyglet由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
前言 。
为什么我不选择pygame,原因很简单,因为pyglet 更简单,比较轻量级,就好比django和flask的区别.
相信你在读了这篇文章之后也会毅然决然的选择pyglet.
这篇文章主要围绕pyglet 的安装、基本用法和实例三部分进行展开.
。
和大多数模块安装方式一样,pyglet 的安装方式如下:
。
下面我们来看看这个模块中具体有哪些方法,那么怎么看呢?我们都知道,要查看系统中所有模块的话,可以使用 。
还有一种比较Python的方法:
恩,但是今天我们要查看的是pyglet的所有方法,所以,dir了解下,用这个内置函数:
。
我们先不看那些带下划线的方法,因为那些方法都是大佬在研究的方向,我们先看比较平民化的方法,比如说第一个app,image,clock,media,os,sys,text,version,window,input,lib,font,event,是不是一看就能知道它是干啥的?什么,你不知道?那只能说明你英语太差了。比如说我想获取它的版本号,那么version肯定是首选了,下面来试试:
结果和我们料想的一样,真的是太有才了。既然我们是要用这个来编写游戏,那么肯定少不了窗口了.
既然谈到窗口,那咱们第一印象肯定是window啦,因为它就有窗口的意思.
我们可以看到它并未显示窗口,说明少了点东西,查看官方文档可知,而且它的参数貌似还不少:
这是我从它的源代码文档中所得的。可以看出都是平常我们见得比较多的英文。这些参数的说明如下
虽然参数很多,但是并不是每个都能用到。下面我们就简单创建个窗口吧.
。
这样就成功启动了一个窗口.
其实窗口里面还有很多方法,有在用自动提示功能IDE的老铁应该不陌生:
想必大家应该比较熟悉了.
但是这也远远不够啊,我们还得给它点修饰,比如说加点文字图片什么的.
。
为了显示文本,我们得使用text方法,text方法又有很多子方法,因为要添加文本所以先要有一个标签,所以我们先要加个label方法,下面看看label有哪些方法:
可以看出,的确又是一大堆,下面请看参数说明:
接下来我们需要创建一个label:
然后绘制文本
但是这样并不能将文字加入到窗口中,因为之前的窗口没有清除,窗口重绘其实就是一个清除在添加在清除的过程,因为窗口创建时启用了一个on_draw方法,所以这时我们需要重写on_draw方法.
这样窗口就达到最新的效果,就有了文字,然后在启动:
。
。
关于图片的话,想必里面的image大家应该比较熟悉.
那么我们先将图片读取出来,然后进行重绘 。
这里要说到的一个非常重要的参数便是blit了,它和显示文字的draw一样,要想图片显示在屏幕上还得靠它.
当然,官方文档显示还有一种方法:
这样也可以,两种方法任选一种,你喜欢就好.
对于加载不同文件夹下的图片,有什么好的策略了:
也可以使用image.load() 。
目前我们仅仅只接触到了on_draw 这一个事件,那么pyglet还有哪些有趣的键盘和鼠标处理事件呢?我们一起看下吧.
。
用法:
1) 常用symbol 。
按键符号:
判断按下哪个键:
可以看到结果如我们所料:
这样大家是不是就有种想写游戏的冲动了了.
当然,pyglet还能将当前键盘状态进行存储以便随时调用,可用KeyStateHandler()实现.
4、鼠标事件 。
我们可以实现下它的部分有趣功能:
。
可以看到,我们成功捕获到鼠标的运行轨迹.
鼠标常数:
这个可以用来判断到底是哪边的鼠标按键被触发了.
改变鼠标光标:
。
也可以使用自定义图像作为光标:
激活鼠标独占模式
。
用于游戏时输入某些命令可以更改某些参数,值,达到一定的效果.
。
1.重设大小 。
用法:on_resize(width,height) 。
我们都知道,如果每个都去这样设置,费时费力,而且也不简洁,我们可以用一个类封装:
有点卡顿,不过问题不大,最重要的是我们把它实现了.
。
pyglet不光可以制作游戏,它还可以播放音乐,那么它是怎么实现的呢?
1.使用media.load播放音频 。
2.使用resource.media播放音频 。
两种方法均可,其实在大部分加载操作中,都可以用到这两种方法,比如说media /image/text都可以.
如果我们需要控制播放,则需引入另一个方法:Player(),注意第一个是大写.
然后我们将播放音频添加到一个队列中去:
最后播放:
通过上面的讲述我们现在就可以添加多首音乐到我们的队列中了。下面请看:
有时候我们想让这些音频循环播放那又该怎么办呢?其实,只需加一个循环即可.
。
无所不能的pyglet,游戏 音频视频全能啊,哈哈哈.
播放视频的方法跟音频比较相似,但也有很多不同的地方。同样也是两种方法:
1.使用media.load播放视频 。
2.使用resource.media播放视频 。
。
pyglet 还有很多好玩的例子,比如canvas画图,不过相比较我说的几点,还是会显得比较无趣些,希望以上的内容能帮助你快速开发一个实用型应用程序.
原文地址:https://mp.weixin.qq.com/s/yvL-tq-1Pezh_QcxOpnpnQ 。
最后此篇关于一篇文章带你了解Python中的游戏开发模块pyglet的文章就讲到这里了,如果你想了解更多关于一篇文章带你了解Python中的游戏开发模块pyglet的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!