Python-- proyecto - dibujado juego de animación 2-

Implementar bucle del juego, así como eventos de monitor

En la última conferencia que necesita para completar esta tal efecto, si no lo ha hecho, por favor no siga leyendo! ! Recuerde recordar recordar. Lo importante decirlo tres veces

Nos fijamos en lo que es el bucle del juego

La llamada buena comprensión del ciclo del juego es, cuando el juego va a dejar de fumar, prestar atención a, ah, no entendemos el juego es el reverso de la salida, entonces el juego no ha terminado, no ha terminado, esto significa que el juego está en marcha, se está ejecutando el estado

  • Se garantiza un funcionamiento continuo del juego no sale directamente
  • Hay una gran imagen ayuda prestados
  • Compruebe constantemente la interacción evento de usuario ...

Escríbanos fuera del bucle del juego

++++
# 游戏循环
while True:
    print(i)
    i += 1
++++

Miramos módulo de juegos actual

005_ juego módulo maestro -w600

Nuestro paso a paso, y ahora tenemos que configurar el reloj del partido

El llamado reloj de juego en realidad se refiere a la frecuencia de actualización

  • Definimos una clase especial 'en Python pygame.time.Clockse puede ajustar fácilmente la velocidad de dibujo de pantalla - la velocidad de fotogramas de actualización '
  • Cómo se usa? Sólo se necesitan dos pasos
    1. En la inicialización del juego para crear un objeto de reloj
    2. En el bucle del juego para que la invocación de objetos reloj tick(帧率)método
    3. Nota: tickEl método se basa en la última vez que se llama , ajustar automáticamente el ciclo de juego de retardo
      se puede llevar a cabo por lo que su
# 1. 创建游戏时钟对象-你不需要导入包,这个是python自带的,就像js里面的定时器
clock = pygame.time.Clock()
i = 0

# 游戏循环
while True:

    # 设置屏幕刷新帧率
    clock.tick(60)

    print(i)
    i += 1

Ahora tenemos que conseguir la animación de batalla primer avión

Análisis de Requerimientos: Tenemos que conseguir el balanceo del avión. Realización del principio de que en cada representación. La posición de la imagen cambia, completando así nuestra actuación en movimiento

  • Análisis lógica de código

    1. En el juego inicializar una definición pygame.Rectde las iniciales de posición variable de registro Héroes
    2. En el bucle de juego cada vez para hacer un héroe de la y - 1- desplazarse hacia arriba
    3. y <= 0 El héroe se mueve a la parte inferior de la pantalla
    4. Nota: cada llamada update()antes del método, necesitamos todas las imágenes del juego son vuelve a dibujar de nuevo y debería ser el primero en volver a dibujar la imagen de fondo , si no escucha mi consejo a su propio riesgo
  • aplicación específica

# 1. 定义英雄的初始位置
++++(在这之前我们已经定于了对象)
# 设置我们的初始化的绘制位置
hero_rect = pygame.Rect(150, 500, 102, 126)

while True:

    # 可以指定循环体内部的代码执行的频率
    clock.tick(60)

    # 2.更新英雄位置
    hero_rect.y -= 1

    # 3. 如果移出屏幕,则将英雄的顶部移动到屏幕底部
    if hero_rect.y <= 0:
        hero_rect.y = 700

    # 4.绘制背景图片
    screen.blit(bg, (0, 0))
    # 5.绘制英雄图像
    screen.blit(hero, hero_rect)

    # 6.更新显示//有关于整个窗口的更新 你需要放在最后
    pygame.display.update()

Eh? Nuestros juegos no están pegados para arriba?

Usted lo ha notado, nuestro ciclo económico parece ser un bucle infinito, no es por las condiciones de

  • Análisis de Requerimientos: cuando necesitamos número x clic en la ventana para salir del juego
  • análisis de código:
    1. Aquí tenemos que utilizar el evento (evento);
    2. Una vez que se inicia el juego tenemos que seguir vigilando la ocurrencia de eventos de interacción
    3. Una vez que la decisión de tener 'Salir' caso cuando terminó nuestro juego descarga de las maletas
    4. pygamePor pygame.event.get()disponibles las acciones del usuario hicieron la actual lista de eventos **, podemos escribir una función para entrar en uno de estos eventos es el caso de 'salida', de acuerdo a ella para salir del juego
    5. Tenga en cuenta que el siguiente código es fija, casi todos los juegos ha dicho una línea de pygame uno de código, su principal aplicación es la misma, no se preocupe, no es difícil
  • la implementación del código
+++++(上面还有好多代码就忽略了,我们专注我们的核心业务需求)
while True:

    # 设置屏幕刷新帧率
    clock.tick(60)

    # 1.事件监听
    for event in pygame.event.get():

        # 2.判断用户是否点击了关闭按钮
        if event.type == pygame.QUIT:
            print("退出游戏...")
            # 卸载所有的依赖包
            pygame.quit()

            # 直接退出系统
            exit()

Supongo que te gusta

Origin www.cnblogs.com/BM-laoli/p/12551437.html
Recomendado
Clasificación