Python-- Projekt - gezeichnete Animation Spiel 2-

Implementieren Spielschleife sowie Überwachungsereignisse

In der letzten Vorlesung müssen Sie diese einen solchen Effekt zu vervollständigen, wenn Sie nicht getan haben, lesen Sie bitte weiter nicht! ! Denken Sie daran erinnern, erinnern. Die wichtige Sache zu sagen dreimal

Wir schauen, was ist das Spiel Schleife

Das so genannte gute Verständnis des Spiel Schleife ist, wenn das Spiel verlassen wird, achten Sie auf, ah, wir nicht verstehen, das Spiel die Rückseite des Ausgangs ist, dann ist das Spiel nicht vorbei, nicht vorbei, so bedeutet dies, dass das Spiel läuft, läuft den Zustand

  • Es sorgt für einen kontinuierlichen Betrieb des Spiels verlassen nicht direkt
  • Es gibt ein großes Hilfe gerenderten Bild
  • überprüfen ständig das Ereignis Benutzer-Interaktion ...

Schreiben Sie uns aus dem Spiel Schleife

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

Wir freuen Spiele aktuell Modul

005_ Spiel Mastermodul -w600

Unser Schritt für Schritt, und jetzt haben wir das Spiel Uhr einstellen müssen

Die so genannte Spiel Uhr bezieht sich eigentlich auf die Bildwiederholfrequenz

  • Wir definieren eine Sonderklasse ‚in Python pygame.time.Clocksehr leicht die Geschwindigkeit des Bildschirmaufbaus eingestellt werden kann - Refresh - Frame - Rate
  • Wie es zu benutzen? Sie müssen nur zwei Schritte
    1. Im Spiel Initialisierung eines erstellen Uhr Objekt
    2. In der Spielschleife so , dass die Uhr Objektaufruf tick(帧率)Verfahren
    3. Hinweis: tickDas Verfahren wird auf Basis werden das letzte Mal aufgerufen wird , automatisch das Spiel Zyklus der Verzögerung
      Sie seine ausführen kann es so
# 1. 创建游戏时钟对象-你不需要导入包,这个是python自带的,就像js里面的定时器
clock = pygame.time.Clock()
i = 0

# 游戏循环
while True:

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

    print(i)
    i += 1

Jetzt müssen wir die erste Flugzeug Schlacht Animation erreichen

Anforderungsanalyse: Wir brauchen das Flugzeug ins Rollen zu bringen. Verwirklichung des Prinzips, dass in jedem Rendering. Die Position des Bildes ändert, damit unsere Leistung bewegenden Abschluss

  • Code-Logik-Analyse

    1. In dem Spiel initialisieren eine Definition pygame.Rectder Ausgangsposition variable Satz Helden
    2. In der Spielschleife zu jeder Zeit macht einen Helden der y - 1- nach oben
    3. y <= 0 Der Held ist an der Unterseite des Bildschirms verschoben
    4. Hinweis: jeder Anruf update()vor dem Verfahren, müssen wir alle Spiele Bilder neu gezeichnet wieder sind und sollte die erste Wieder zeichnen das Hintergrundbild , wenn Sie auf eigene Gefahr auf meinen Rat nicht hören
  • spezifische Umsetzung

# 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()

Huh? Unsere Spiele sind nicht hochnäsig?

Sie haben es bemerkt, ist unser Geschäftszyklus scheint eine unendliche Schleife zu sein, es nicht über Bedingungen

  • Anforderungsanalyse: Wenn wir brauchen x Anzahl Klick auf das Fenster, um das Spiel zu beenden
  • Code-Analyse:
    1. Hier stellen wir brauchen um das Ereignis zu verwenden (event);
    2. Sobald das Spiel beginnt, müssen wir das Auftreten von Interaktionsereignisse zu überwachen, um fortzufahren
    3. Sobald die Entscheidung zu haben ‚beenden‘ Ereignis, als er endete unser Spiel unser Gepäck Entladen
    4. pygameDurch die pygame.event.get()verfügbaren Benutzeraktionen der aktuellen gemacht Liste der Ereignisse **, können wir eine Funktion , um in einer dieser Veranstaltungen ist die ‚exit‘ Ereignis, nach ihm schreiben , das Spiel zu beenden
    5. Beachten Sie, dass der folgende Code festgelegt ist, fast jedes Spiel so ein pygame eine Zeile Code hat, deren Umsetzung Prinzip ist das gleiche, keine Sorge, es ist nicht schwer
  • Code-Implementierung
+++++(上面还有好多代码就忽略了,我们专注我们的核心业务需求)
while True:

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

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

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

            # 直接退出系统
            exit()

Ich denke du magst

Origin www.cnblogs.com/BM-laoli/p/12551437.html
Empfohlen
Rangfolge