Hallo Hörnchen
In diesem zweiten Teil meiner kleinen Reihe, in der ich versuche, mir selber Cocos2d (Python) beizubringen, möchte ich das minimale Grundgerüst aus dem ersten Teil weiter aufbohren. Im Endeffekt soll so etwas herauskommen, wie mein PyGame-Tutorial aus dem letzten Jahr (Teil 1, Teil 2, Teil 3 und Teil 4), das ich ja auch schon erfolgreich nach Processing.py portiert hatte (Teil 1, Teil 2, Teil 3 und Teil 4). Nun also der Versuch mit Cocos2d:
Um dieses Bild zu erzeugen, habe ich den Quelltext des Grundgerüstes nur ein wenig aufgebohrt:
import cocos
from cocos.director import director
from cocos.scene import Scene
from cocos.layer import ColorLayer
from cocos.sprite import Sprite
class Game(ColorLayer):
def __init__(self):
super(Game, self).__init__(0, 80, 125, 255)
self.player = Sprite("assets/horngirl.png")
self.player.position = 160, 120
self.add(self.player)
def main():
director.init(caption = "Hello Hörnchen!", width = 320, height = 240)
scene = Scene(Game())
director.run(scene)
if __name__ == "__main__":
main()
Die Klasse Game
erbt von ColorLayer
, der in der __init__()
-Funktion eine Hintergrundfarbe im Format RGBA mitgegeben wird. Dann wird das Bild der jungen Dame geladen und positioniert. In der main()
-Funktion wird die Scene geladen und angezeigt. Das ist alles, aber es geht noch mehr.
In einer zweiten Version habe ich ein Modul resources.py
angelegt
import pyglet
pyglet.resource.path = ["assets"]
pyglet.resource.reindex()
horngirl = pyglet.resource.image("horngirl.png")
und dort das Hörnchen versteckt. Damit kann man es sich im Hauptprogramm – besonders wenn man viele resourcen hat – noch einfacher machen:
import cocos
from cocos.director import director
from cocos.scene import Scene
from cocos.layer import ColorLayer
from cocos.sprite import Sprite
import resources
class Game(ColorLayer):
def __init__(self):
super(Game, self).__init__(0, 80, 125, 255)
self.player = Sprite(resources.horngirl)
self.player.position = 160, 120
self.add(self.player)
def main():
director.init(caption = "Hello Hörnchen!", width = 320, height = 240)
scene = Scene(Game())
director.run(scene)
if __name__ == "__main__":
main()
Cocos2d setzt ja bekanntlich auf PyGlet auf und warum soll man dann nicht PyGlet die Ressourcenverwaltung überlassen? Bei nur einer Ressource ist es eher Mehraufwand, aber bei vielen Ressourcen kann sich das durchaus auszahlen. Still digging!