[Python] Pyglet tutorial (dos) de su primera aplicación Pyglet

一, Hola, mundo

No hay duda, desde nuestro primer programa Hola mundo comenzó. El programa se abrirá una ventana que contiene un poco de texto, y luego esperar cerca. Encontrar el programa completo en los ejemplos de archivos / programming_guide / hello_world.py.
Aquí Insertar imagen Descripción

código

En primer lugar liberar el código completo

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
def on_draw():
    window.clear()
    label.draw()


pyglet.app.run()

1, en pygletel paquete

import pyglet

2, crear una ventana

Llamando al pyglet.window.Windowcrear una instancia de un objeto constructor por defecto. Una vez creado, se pone una ventana visible, y todos sus parámetros tienen valores por defecto razonables:

window = pyglet.window.Window()

3, el contenido de la ventana

Para mostrar el texto, vamos a crear una etiqueta. Parámetros para ajustar las etiquetas de las fuentes, y las posiciones de anclaje:

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')

on_draw (función) se utiliza para editar el contenido de la ventana. ofertas Pyglet método controlador de eventos varios unido a un objeto; Un método simple es utilizar el decorador:

@window.event
def on_draw():
    window.clear()
    label.draw()

En la función on_draw anterior (), la ventana se borrará al color de fondo por defecto (negro) y dibujar la etiqueta.

4, llame a:

pyglet.app.run()

Introduzca el Pyglet bucle de eventos por defecto y permite responder a eventos Pyglet de aplicación, como un ratón y un teclado. Ahora será necesario llamar a un controlador de eventos, y ejecutar () Este método devuelve solamente cuando todas las ventanas de las aplicaciones están cerradas.

Aquí Insertar imagen Descripción

Si esto es correcto, entonces debería aparecer la siguiente pantalla

En segundo lugar, el visor de imágenes

La mayoría de los juegos y las aplicaciones necesitan cargar imágenes y visualización en la pantalla. En este ejemplo, cargamos una imagen de directorio y lo muestra en la ventana de la aplicación:

código

import pyglet

window = pyglet.window.Window()
image = pyglet.resource.image('kitten.png')

@window.event
def on_draw():
    window.clear()
    image.blit(0, 0)

pyglet.app.run()

Utilizamos pyglet.resourcela image()función para cargar una imagen, la imagen se encontrará automáticamente la posición de la imagen (pero no el directorio de trabajo) en base a la ruta del archivo fuente.

Para cargar la imagen no incluido junto con la solicitud (por ejemplo, se especifica en la línea de comandos que se requiere pyglet.image.load()).

blit()Un método para la elaboración de una imagen. Parámetro (0, 0)dice Pyglet trazar las coordenadas de pixel de imagen de la ventana 0,0 (esquina inferior izquierda) de.

Aquí Insertar imagen Descripción

En tercer lugar, el trato con los eventos de ratón y teclado

código

import pyglet
from pyglet.window import mouse
window = pyglet.window.Window()

@window.event
def on_key_press(symbol, modifiers):
    print('A key was pressed')

@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        print('The left mouse button was pressed.')

@window.event
def on_draw():
    window.clear()

pyglet.app.run()

1, teclado

Hasta ahora, el único evento utilizando el on_draw()evento. Con el fin de responder a los eventos de teclado y ratón, también debe escribir y asociar controladores de eventos para estos eventos:

import pyglet

window = pyglet.window.Window()

@window.event
def on_key_press(symbol, modifiers):
    print('A key was pressed')

@window.event
def on_draw():
    window.clear()

pyglet.app.run()

Hay dos parámetros de evento clave: Pulsando los símbolos clave virtuales y todos los modificadores (por ejemplo, teclas CTRL y SHIFT) presente combinación bit a bit.

El símbolo de la llave se define en pyglet.window.key:

from pyglet.window import key

@window.event
def on_key_press(symbol, modifiers):
    if symbol == key.A:
        print('The "A" key was pressed.')
    elif symbol == key.LEFT:
        print('The left arrow key was pressed.')
    elif symbol == key.ENTER:
        print('The enter key was pressed.')

Sobre pyglet.window.keyuna lista completa de los símbolos clave, por favor, consulte la documentación

2, ratón

Y teclado similar

from pyglet.window import mouse

@window.event
def on_mouse_press(x, y, button, modifiers):
    if button == mouse.LEFT:
        print('The left mouse button was pressed.')

x e y parámetros se da el botón del ratón está deprimido respecto a la esquina inferior izquierda de la ventana.

Puede manejar más de 20 tipos de eventos en la ventana. Encontrar una manera sencilla el nombre del evento deseado y parámetros que añadir la siguiente línea en el programa:

event_logger = pyglet.window.event.WindowEventLogger()
window.push_handlers(event_logger)

En cuarto lugar, sonidos de juegos y música

Pyglet puede reproducir fácilmente una gran variedad de sonidos y mezclarlos entre sí. Juega un ejemplo de un archivo MP3:

import pyglet

music = pyglet.resource.media('music.mp3')
music.play()

pyglet.app.run()

Y cargar la imagen muestra como se describe anteriormente, los medios de comunicación () el camino para encontrar un archivo de sonido en el directorio de la aplicación. Si conoce la ruta del sistema de archivos (ruta relativa o absoluta), el uso pyglet.media.load () .

Por defecto, se streaming de reproducción de audio. Esto es bueno para el efecto más largas pistas de música. Breve sonido, tales como armas de fuego utilizada en el juego, debe estar completamente decodificada en la memoria antes de su uso. Como resultado, la línea más inmediato, el rendimiento de la CPU, la pérdida de menos. También permite repetir el mismo sonido sin tener que recargar. En este caso, especifique streaming=False:

sound = pyglet.resource.media('shot.wav', streaming=False)
sound.play()

Ejemplos más detallados, consulte el siguiente código de ejemplo en el archivo de origen

  • examples/media_player.py: Pyglet muestra cómo utilizar la reproducción de audio y video

  • examples/noisy/noisy.py: Demo durante la reproducción de muchas muestras de audio cortas, como en el juego

MP3 y otros formatos de audio comprimidos requieren la instalación de FFmpeg. Los archivos WAV sin comprimir se pueden reproducir sin el uso de FFmpeg


Si se siente bien, señalar un elogio, un punto de preocupación, y celebra también dará una recompensa para apoyar el trabajo del editor acerca de
Publicado 52 artículos originales · ganado elogios 384 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_41045354/article/details/105006796
Recomendado
Clasificación