image image


Spieleprogrammierung mit Python und PyGlet: Getting Started

Von meinem eigenen gestrigen Schwung war ich so begeistert, daß ich den Worten auch möglichst schnell Taten folgen lassen wollte. Und so habe ich mich erst einmal an die Erstellung eines Templates mit Python und PyGlet gewagt, daß nichts anderes macht, als ein Fenster zu öffnen und die aktuelle Frame Rate links unten auszugeben.

image

Die meisten einführenden Tutorials kommen ohne die Erstellung einer GameWindow-Klasse (oder wie immer man die Klasse bezeichnen mag) aus, müssen dann aber on_draw() als Funktion mit einem Decorator dekorieren. Ich mag Dekoratoren nicht, daher habe ich mich für eine objektorientierte Version entschieden, in der on_draw() dann eine Methode ist und folglich keinen Decorator benötigt. Das Ding macht nicht viel, also ist der Quellcode auch entsprechend kurz:

import pyglet
from pyglet.window import FPSDisplay

class GameWindow(pyglet.window.Window):
    
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.set_location(100, 100)
        self.frame_rate = 1/60.0
        self.fps_display = FPSDisplay(self)
        self.fps_display.label.font_size = 24
    
    def on_draw(self):
        self.clear()
        self.fps_display.draw()
    
    def update(self, dt):
        pass

win = GameWindow(640, 480, "My PyGlet Game", resizable = False)
pyglet.clock.schedule_interval(win.update, win.frame_rate)
pyglet.app.run()

Im Konstruktor wird mit self.frame_rate = 1/60.0 die Frame Rate auf 60 Bilder per Sekunde festgelegt und wie der Screenshot zeigt, klappt das auch recht gut. Die Bildwiederholungsrate schwankt in der Anzeige zwischen 56 und 60 Bilder in der Sekunde – dies dürfte für einfache Spiele mehr als ausreichend sein.

Wie weiter?

Als erste Fingerübung plane ich eine Implementierung der Space Invaders-Version, die ich im April auch schon einmal mit Python und der Turtle für einen Python-Kurs hier im Haus implementiert hatte. Da ich durch PyGlet auf die doch recht behäbig agierende, auf Tkinter aufsetzende Schildkröte verzichten kann, hoffe ich, auch einige der Erweiterungen implementieren zu können, die Attila Toth seiner Version spendiert hat. Still digging!

Zusätzliche Ressourcen

Jonathan Hartley hat sein Blog von WordPress auf statische Seiten mit Jekyll umgestellt. Obwohl das sehr löblich ist, sind dabei seine alten Links kaputtgegangen (woher kenne ich das nur?), daher hier noch einmal einige seiner nützlichen Beiträge zu Python, PyGlet und OpenGL:

Ich habe meinen PyGlet-Experimenten ein GitHub-Repositorium spendiert. Dort werdet Ihr auch alle zukünftigen Programme finden.


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image


image