python游戏库哪个好_pyglet库是python的一个游戏动画GUI和轻量级媒体框架

1 说明:

1.1 安装

pip install pyglet

1.2 相关地址

https://pypi.org/project/pyglet/

http://pyglet.org/

https://github.com/pyglet/pyglet

1.3 介绍

1.3.1 是python的游戏三大库之一,适合游戏动画,1D,2D,3D设计。

1.3.2 一个python下的多媒体框架,属于轻量级别,可以轻易的做出交互丰富的应用。比pygame,panda3d更容易学习和掌握。

2 2d动画散步的精灵。

2.1 代码:dinosaur.py

#网上gif下载地址

# The dinosaur.gif file packaged alongside this script is in the public

# domain, it was obtained from http://www.gifanimations.com/.

#导入模块

import sys

import pyglet

##定义系统加载图片地址

if len(sys.argv) > 1:

# Load the animation from file path.

animation = pyglet.image.load_animation(sys.argv[1])

texture_bin = pyglet.image.atlas.TextureBin()

animation.add_to_texture_bin(texture_bin)

else:

# 文件与py文件在同一个目录,这是pyglet的特色之处

animation = pyglet.resource.animation('dinosaur.gif')

#定义精灵=sprite和导出精灵模块

sprite = pyglet.sprite.Sprite(animation)

#定义窗口和大小

window = pyglet.window.Window(

#窗口标题名

caption='散步的精灵动画',

#窗口大小可调节

resizable=True,width=8*sprite.width, height=8*sprite.height)

# Set window background color to white.

# 设置窗口背景颜色为白色

pyglet.gl.glClearColor(1, 1, 1, 1) #默认背景颜色是黑色,注释掉就是黑色

#window的装饰器法

@window.event

def on_draw():

window.clear()

sprite.draw()

#启动

pyglet.app.run()

2.2 dinosaur.gif,注意与上面的py文件放在同一个目录下

2.3 效果图

3 Label设置

代码:多种方法显示label,代码注释中有讲解。

#方法一

'''

import pyglet

window = pyglet.window.Window()

label = pyglet.text.Label('Hello, world',

font_name='Times New Roman',

font_size=36,

x=window.width//2, y=window.height//2,

anchor_x='center', anchor_y='center')

#在一个相同名字的函数上使用@Window.event装饰器

@window.event

def on_draw():

window.clear()

label.draw()

pyglet.app.run()

'''

'''

#方法二

import pyglet as pt

#window = pt.window.Window() #默认窗口大小

win = pt.window.Window(1000,1000) #指定窗口大小

label = pt.text.Label('Hello, world',

font_name='Times New Roman',

font_size=36,

x=win.width//2, y=win.height//2,

anchor_x='center', anchor_y='center')

#在一个相同名字的函数上使用@Win.event装饰器

#这个装饰器的win就是上面定义win

@win.event

def on_draw():

win.clear()

label.draw()

pt.app.run()

'''

'''

#方法三

import pyglet as pt

win = pt.window.Window(

#窗口大小设置

width=1000,

height=1000,

#窗口标题名

caption="第一个窗口",

#窗口大小可调节

resizable=True

)

label = pt.text.Label('Hello, world',

font_name='Times New Roman',

font_size=36,

x=win.width//2, y=win.height//2,

anchor_x='center', anchor_y='center')

if __name__ == '__main__':

pt.app.run()

label.draw()

'''

#方法四

import pyglet

game_window = pyglet.window.Window(

width=1000,

height=1000,

caption="第一个窗口",

resizable=True

)

# 创建Label对象

label = pyglet.text.Label('Hello, world',

font_size=25, # 字体不指定,使用默认的,大小为25

x=game_window.width//2,

y=game_window.height//2,

anchor_x='center', anchor_y='center'

)

def show_label():

# 将初始的窗口内容删除

game_window.clear()

# 添加文本,重新绘制窗口

label.draw()

# 重写on_draw方法,以后就会执行我们在show_label里面指定的代码

# set attribute的意思

setattr(game_window, "on_draw", show_label)

if __name__ == '__main__':

pyglet.app.run()

4 照片显示

代码

#导出模块

import pyglet

#窗口定义

#window = pyglet.window.Window() #采用默认方法

window = pyglet.window.Window(

#窗口大小设置

width=1000,

height=1000,

#窗口标题名

caption="照片显示",

#窗口大小可调节,默认是False,不可调节

resizable=True

)

#定义照片

#注意特别之处,文件py与jpg在同一个目录下

#一般这种都在根目录下,或者指定路径和目录

image = pyglet.resource.image('1221.jpg')

#装饰器法显示

@window.event

def on_draw():

window.clear()

image.blit(0, 0)

pyglet.app.run()

1221.jpeg

plglet照片显示

5 计时器,代码

#定义计时器

import pyglet

#定义窗口全屏

#window = pyglet.window.Window(fullscreen=True) #哈哈哈,deepinlinux的录屏不支持这种全屏

window = pyglet.window.Window( #窗口大小设置

width=1000,

height=1000,

#窗口标题名

caption="计时器",

#窗口大小可调节

resizable=True)

#定义计时器

class Timer:

#初始化定义

def __init__(self):

self.label = pyglet.text.Label('00:00', font_size=100,

x=window.width//2, y=window.height//2,

anchor_x='center', anchor_y='center')

self.reset()

#定义重设函数

def reset(self):

self.time = 0

self.running = False

self.label.text = '00:00'

self.label.color = (255, 255, 255, 255)

#定义更新韩式

def update(self, dt):

if self.running:

self.time += dt

#python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

m, s = divmod(self.time, 60)

self.label.text = '%02d:%02d' % (m, s)

if m >= 5:

self.label.color = (180, 0, 0, 255)

@window.event

#定义窗口按钮函数

def on_key_press(symbol, modifiers):

#空格键按钮定义,点击开始,再点击暂停

if symbol == pyglet.window.key.SPACE:

if timer.running:

timer.running = False

else:

if timer.time > 0:

timer.reset()

else:

timer.running = True

elif symbol == pyglet.window.key.ESCAPE:

window.close()

@window.event

def on_draw():

window.clear()

timer.label.draw()

timer = Timer()

pyglet.clock.schedule_interval(timer.update, 1/30.0)

pyglet.app.run()

效果图

==========未完待续========

下次讲讲pyglet的坑的问题,哈哈哈哈。先分享出来,喜欢就转发和收藏

你可能感兴趣的:(python游戏库哪个好)