image image


Weiter mit Pygame Zero: Fetching Kitty

Am letzten dusseligen Donnerstag hatte ich ja erste Erkundungen mit Pygame Zero unternommen, einer Python-Bibliothek, die zwar intern Pygame nutzt, aber die (Spiele-) Programmierung radikal vereinfachen will. Heute habe ich dann getestet wie ein (extrem simples) Spiel damit programmiert werden kann.

image

Kitty (aka Horngirl), eine Figur aus dem freien (CC-BY 3.0), legoartigen Tileset Planet Cute von Daniel Cook 1 gleitet von links nach rechts über das Spielfeld und der Spieler soll sie mit einem Mausklick treffen. Gelingt ihm das, gewinnt er einen Punkt, verfehlt er Kitty, bekommt er einen Punkt abgezogen.

Zugegeben, das ist als Spiel nicht wirklich der Megakracher, aber er zeigt die grundlegende Mechanik, die eine Spielengine beherrschen sollte. Und Pygame Zero erledigt das wirklich wieder mit nur wenigen Zeilen Code:

import pgzrun

TITLE = "Fetching Kitty"
WIDTH = 500
HEIGHT = 150

kitty = Actor("horngirl")
kitty.topleft = 200, -10

score = 0
mouse_pos = (-200, -200)

def draw():
    global mouse_pos
    screen.fill((0, 80, 125))
    kitty.draw()
    screen.draw.circle(mouse_pos, 30, "pink")
    mouse_pos = -2000, -2000

def update():
    kitty.left += 2
    if kitty.left > WIDTH + 10:
        kitty.left = -10

def on_mouse_down(pos):
    global score
    global mouse_pos
    mouse_pos = pos
    if kitty.collidepoint(pos):
        score += 1
    else:
        score -= 1
        print("Daneben!")
    print(score)

pgzrun.go()

Klickt der Spieler in das Spielefenster, zeigt sich kurz ein rosafarbenener Kreis, der ansonsten weit außerhalb des Spielfeldes geparkt wurde. Die beiden Funktionen update() und draw() werden von Pygame Zero in einer Event-Schleife immer wieder aufgerufen, mit welcher Framerate und wie man die Framerate gegebenenfalls ändern kann, habe ich leider noch nicht herausgefunden – die (offizielle) Dokumentation ist da doch recht dünn geraten. Aber da man ja immer auf das darunterliegenfe Pygame zugreifen kann, muß man gegebenenfalls die Pygame-Routinen einsetzen. Still digging!

image

  1. Der Link in Daniel Cooks Blogbeitrag ist kaputt, aber alle Tiles sind auch auf OpenGameArt.org zu 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