image image


Klasse Kitty!

Nach den ersten beiden Teilen meiner kleinen Erkundung von Processing.py, dem Python-Mode von Processing und vermutlich die einzige, derzeit aktiv gepflegte Alternative zu PyGame, möchte ich erst einmal ein wenig aufräumen und daran erinnern, daß Akteure eines Computerspiels programmtechnisch am besten in Klassen aufgehoben sind. Daher habe ich auch Kitty eine eigene Klasse spendiert:

# coding=utf-8

class Kitty(object):
    def __init__(self, tempX, tempY):
        self.x = tempX
        self.y = tempY
        self.radiusX = 50  # Bildbreite/2
        self.radiusY = 85  # Bildhöhe/2
        
    def loadPic(self):
        self.img = loadImage("horngirl.png")
    
    def move(self):
        self.x = mouseX - self.radiusX
        self.y = mouseY - self.radiusY
        
    def display(self):
        image(self.img, self.x, self.y)

Klassen kann man in Processing der Übersicht halber in separaten Dateien unterbringen, die in der IDE jeweils einen eigenen Reiter bekommen (siehe Screenshot).

image

Hierbei ist jedoch zu beachten, daß im Gegensatz zu Processing und P5.js (jeweils aus anderen Gründen) die Klasse nicht automatisch dem Quelltext der Applikation bei der Ausführung hinzugefügt wird. Sie ist wenn sie nicht im Quelltext der Applikation steht – wie in Python üblich – ein Modul und muß gesondert mit

from kitty import Kitty

importiert werden. Und da sie ein reines Python2- (oder genauer Jython-) Modul ist, sollte man auch nicht vergessen # coding=utf-8 in die erste Zeile der Datei schreiben, denn sonst bekommt man Probleme mit dem ö im Kommentar (Bildhöhe). 😜

Den Konventionen folgend, habe ich dem Objekt Kitty neben der eigentlichen Initialisierung drei Funktionen spendiert, nämlich loadPic(), move() und display(). Die beiden letzeren hätte man auch in einer Funktion zusammenfassen können (beispielsweise update() wie bei PyGame üblich), aber da die Philosophie sein sollte, jeder Aktivität eine eigene Funktion zu spendieren, bin ich der Konvention gefolgt1.

Ansonsten ist zu dem Programm nichts weiter zu sagen. Es zeigt einfach eine Kitty die der Maus hinterherrennt. Und dadruch, daß fast die gesamte Logik in die Klasse Kitty ausgelagert wurde, ist das Hauptprogramm von erfrischender Kürze:

from kitty import Kitty

kitty = Kitty(275, 100)

def setup():
    size(640, 480)
    kitty.loadPic()

def draw():
    background(0, 80, 125)
    kitty.move()
    kitty.display()

So muß es ja auch sein.

image

Kitty alias »Horn Girl« stammt wieder aus dem von Daniel Cook (Danc) in seinem Blog Lost Garden unter einer freien Lizenz (CC BY 3.0 US) zu Verfügung gestellten Tileset Planet Cute.

  1. Ein bei Processing.py durchgehend zu beobachtender Konventionsbruch macht mich allerdings wuschig. Während die PEP8 für Variablennamen die Trennung durch Unterstriche empfiehlt (z.B. mouse_x) folgen die Programmierer der Beispielprogramme durchgehend der Java-Konvention des camelCase (mouseX). Ich habe mich erst einmal entschlossen, ebenfalls den camelCase zu nutzen, ob ich dabei aber bleiben werde, weiß ich noch nicht.


(Kommentieren)  Klasse Kitty! – 20161109 bitte flattrn

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