Dienstag, 9. Juni 2009

Modelleisenbahn

Einmal - vor ziemlich langer Zeit - hat mein Vater eine Modelleisenbahn für mich gekauft. Das war so eine kleine Minitrix-Bahn, mit einem winzigen Zug, Gleisen, Weichen, Signalen, elendig vielen Schaltern, Kabeln und einem Trafo. Alles war zusammen auf eine Pressspanplatte genagelt. Es war ein tolles Geschenk, das ihn viel Zeit gekostet hat. Mittlerweile beobachte ich meine eigenen Kinder, wie sie Brio- oder Legobahnen aufbauen und großen Spaß daran haben, weil sie den ganzen Aufbau selbst machen können.
Da ich jetzt also auch etwas brauche, das ich basteln kann, habe ich mal versucht, eine Modelleisenbahn in Software nachzubauen. Als Grundlage wähle ich Python, weil ich es einigermaßen kann, weil's gut zu lesen ist und man damit ziemlich schnell voran kommt. Python hat selbst keine Oberfläche. Aber ich werde die Zeichenmethode der Objekte so gestalten, dass ich zunächst mit der Turtle arbeiten kann und werde danach auf Pygame umstellen.

Entwicklungziele:
So ein Eisenbahnset besteht aus Gleiskörper, Zug, Kontrollsystem und Energieversorgung.
  1. Der Gleiskörper - den braucht man sowieso: Gleise (Gerade, Kurven, Poller, Weichen ...). Er soll eine doppelt verkettete Liste sein. Jedes Element der Liste hat eine graphische Komponente.
  2. Das Kontrollsystem: Weichen und Signale. Eine Weiche kann aus Gerade und Kurve zusammengesetzt werden, aber sie hat einen Vorgänger und zwei Nachfolger. Signal muss die aktuelle Weichenstellung angeben und umschalten können. Signal und Weiche sollen zunächst zusammengehören.
  3. Zug - eine Lok und mehrere Wagons. An der Lok hängen die Wagons. Das sollte eine einfach verkettete Liste werden. Der Zug muss ein Gleisstück nach dem anderen befahren können und anhalten, wen ein Signal auf Rot steht.
  4. Die Energieversorgung = CPU-Spinner, Animationsschleife.

Einen ersten Entwurf findet man hier: Eisenbahn-0.1.py
Der Entwurf beinhaltet einen ersten Gleiskörper mit Weichen und Signalen. Eine einfachste Animationsschleife lässt das Ganze ein paar Mal zeichnen.

Keine Kommentare:

Kommentar veröffentlichen