Und weiter? 1
Seit dem letzten Eintrag ist mehr als ein Jahr vergangen. Eine lange Zeit, in der man ziemlich viele Lektionen hätte schreiben können. Zeitmangel war nur das eine Problem, FXRuby das andere.
Ich musste feststellen, dass es mi FXRuby keine einfache, kinderleichte Möglichkeit gibt, eine komplexe 2D Szenerie zu bauen. Es gab keine fertigen Routinen für affine Transformationen. Die Lösung wäre, das alles selber zu bauen, oder eine weitere Bibliothek für die 2D Berechnungen hinzuzunehmen. Egal was von beiden, es würde dann wohl nur schwer noch in einem Block von sieben plus drei Lektionen darzustellen sein, so wie bei rubykids.de bisher üblich.
Trotzdem muss die LKW Lektion auf jeden Fall fertig werden. Irgendwo hatte ich doch noch eine selbstgestrickte 2D Bibliothek aus dem letzten Semester rumliegen. Vielleicht lässt sie sich vereinfachen, auf das Wichtigste reduzieren? Ich arbeite dran.
Lektion 23 - Oberflächenbewegung
In dieser Lektion erweckst du den LKW zum Leben. Er wird deiner Tastatur und deiner Maus gehorchen und sich auf der Oberfläche von FXRuby vorantasten. Schritt für Schritt wirst du in den kommenden Lektionen dann seine Bewegungen verbessern, sodass es am Ende hoffentlich nicht übertrieben sein wird zu sagen, er fährt!
Lektion 22 - Oberflächentransport 1
Die Hello World Oberfläche der letzten Lektion zeigte dir den allgemeinen Umgang mit FXRuby. Damit kannst du aber auf die Dauer niemanden beeindrucken. Zu einer richtigen Oberfläche gehört mehr. Im Vergleich zur Programmierung an der Konsole, wo jede Ausgabe auf einer Zeile stattfindet und der Rest einfach eine Zeile nach oben rutscht, steht dir hier ein bestimmter Bereich an der Oberfläche für Ein- und Ausgaben zur Verfügung, der eine bestimmte Breite und Höhe hat. Ein Widget irgendwo auf dieser Oberfläche hat selbst wieder eine bestimmte Breite und Höhe.
Diese Lektion will dir ein besseres Gefühl für diese zweidimensionale Anordenbarkeit geben.
Lektion 21 - Oberflächlich gesehen...
Der nächste Block von 7 + 3 Lektionen liegt vor uns. Sie machen dich mit der Programmierung von grafischen Benutzeroberflächen bekannt. Alle bisher mit rubykids.de entwickelten Programme waren rein textbasiert, die Ein- und Ausgabe erfolgte auf der Kommandozeile in einer DOS-Box. Das wird nun anders. Du lernst mit FXRuby eine mächtige Programmbibliothek für Ruby kennen, die dir bei der Entwicklung von Oberflächen hilft.
Das Problem mit Ruby ist, dass es eigentlich selbst überhaupt nicht mit grafischen Oberflächen umgehen kann, denn hierfür ist eine nahe Kommunikation mit der Grafik-Hardware und den Tiefen des Betriebssystems notwendig. Ruby bedient sich daher anderer Bibliotheken, die in den Programmiersprachen C oder C++ entwickelt sind. Ruby verfügt über einen eingebauten Mechanismus, der es erlaubt in diesen Fremdsprachen entwickelten Code zu nutzen und Programmbefehle in Ruby auf diese weiter unten liegende Codeebene weiterzugeben. Mehr noch, die Programmiersprache Ruby, d.h. der Ruby-Interpreter, ist selbst mit Hilfe der Programmiersprache C entwickelt.
Das musst du immer irgendwie im Hinterkopf behalten, denn Rubycode, der grafische Oberflächen erzeugt ist irgendwie anders als normaler Rubycode. Man könnte auch sagen, er ist ein wenig ekelig. Aber nun will ich dir nicht die ganze Vorfreude nehmen, fangen wir an…
Lektion 20 - Dort, wo das Bit haust
Zahlen bestehen aus Ziffern. Eine Ziffer ist ein einzelnes Symbol. Eine Zahl wird aus einer oder mehreren Ziffern gebildet. Nimm die 21, sie besteht aus den beiden Ziffern 2 und 1. Die Reihenfolge der Ziffern oder die Stelle, an der Ziffern stehen, ist bei Zahlen wichtig. Denn 21 ist nicht dasselbe wie 12. Daher nennt man unser gewöhnliches Zahlensystem auch ein Stellenwertsystem. Jeder Position in einer Zahl ist ein bestimmter Stellenwert zugeordnet und die Ziffer gibt an, wie oft dieser Stellenwert gezählt wird. Unser Zahlensystem ordnet jeder Stelle von rechts nach links ein bestimmtes Vielfache von Zehn zu (1er, 10er, 100er, 1000er, ...) und es besitzt auch zehn verschiedene Ziffern (Symbole) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 zur Darstellung von Zahlen. Daher nennt man es auch das Zehnersystem oder (wegen lateinisch decem für zehn) Dezimalsystem.
Ein Bit ist eine Ziffer im Zahlensystem der Computerwelt, dem Dualsystem (oder Binärsystem). Hier gibt es nur zwei verschiedene Ziffern, 0 und 1. Jeder Position in einer Bitzahl ordnet man ein Vielfaches von zwei zu (1er, 2er, 4er, 8er, 16er, 32er, 64er, ...). Es scheint aber offensichtlich für einen Computer keine Einschränkung zu sein, dass er nur mit zwei verschiedenen Ziffern umgehen kann.
In dieser Lektion schauen wir uns an, wo die Bits im Computer wohnen, wie wir sie lesen und schreiben können und wie daraus Buchstaben und Zahlen werden, die du am Monitor siehst.
Schleifen binden - Theorie Lektion 8
Der letzte Artikel versprach vollmundig, dass es weitergeht. Und das wird es auch! Was sind schon 50 Tage? Es lebt sich auch gut ohne Ruby.
Zur Einstimmung nach dieser langen Pause gibt es nicht die bereits erwartete Abschlußlektion 20, sondern eine kleine Theorielektion zum Thema Rekursion.
Urlaub vom Internet 1
April und Mai sind wohl die besten Monate für eine Zeit ohne Internet. Die Natur erwacht, jeden Tag ist es etwas länger hell, man zieht um und verliert seinen DSL-Anschluß…
Die Leute von Arcor waren ziemlich fleißig und haben alles wieder prima hinbekommen.
Der nächsten Lektion steht nun nichts mehr im Wege. Aber anstatt sie bereits vorzubereiten habe ich natürlich die letzten Wochen mit allem möglichen verbracht. Daher wird es doch noch ein Weilchen dauern.
Lektion 19 - Containers, Blocks und Iterators 2
Eine der Stärken von Ruby sind die leicht zu benutzenden Datenstrukturen, die als Behälter für alle möglichen Daten dienen. Du hast von diesen Container genannten Strukturen bereits Listen und Hashes kennengelernt.
In dieser Lektion lernst du die beiden anderen Talente von Ruby kennen: Blocks (engl. für Blöcke) und Iterators (engl. für Iteratoren, aus dem lateinischen iter, das Gehen, der Weg oder der Marsch).
Dann, mit der nächsten Lektion 20, geht dieser Teil von rubykids.de schließlich zu Ende und es beginnt mit Lektion 21 ein neuer. Mal sehen, was wir da spannendes machen werden.
Lektion 18 - Gib ihr dein Ruby!
Peter hat ein Programm in Ruby für Livia entwickelt und möchte es ihr zum Geburtstag schenken. Livia leidet an Unpünktlichkeit. Also hat er die letzten Tage vor dem großen Fest damit verbracht, ihr eine Zeitansage in Ruby zu schreiben. Den Quellcode teilte er auf zwei Dateien auf. Nun steht er vor der Frage, wie er ihr seine kreativen Zeilen zukommen lässt. Soll er beide Dateien als Anhang an seine Glückwunsch E-Mail kleben? Soll er sie gemeinsam in eine Zipdatei packen? In dieser Lektion lernst du, wie du deine coolen Programme an andere weitergibst. Der Quellcode zu dieser Lektion befindet sich wie immer im Downloadbereich.
Lektion 17 - Tic-Tac-Toe objektorientiert
Dies ist die letzte Lektion zu Tic-Tac-Toe. Das Spiel wird einen nicht unerheblichen Umbau erfahren: es wird objektorientiert werden. Das heißt aber nicht, dass es danach optimal und fertig ist. Software ist nie fertig (und meistens leider auch nicht immer optimal). Es gibt stets noch etwas zu verbessern oder neue Funktionalität, die man noch hinzufügen könnte. In den nächsten Lektionen warten aber noch mehr Abenteuer mit Ruby auf dich.
OOP vertieft - Theorie Lektion 7
In Lektion 16 hast du einen ersten Eindruck von objektorientierter Programmierung (abgekürzt OOP) bekommen. Die prozedurale Programmierung im Spiel Tic-Tac-Toe führte dazu, dass wir eine Methode nach der anderen implementierten, die aber alle irgendwie zusammengehören. In Lektion 17, der Abschlußlektion des Spiels, wollen wir gemeinsam den bisherigen Rubycode für Tic-Tac-Toe in einen objektorientierten Code umschreiben.
Dazwischen füge ich diese Theorielektion ein, damit wir etwas Zeit haben uns mit dem Neuen vertraut zu machen.
Lektion 16 - Objekte - na endlich!
In den vergangenen Lektionen drehte sich alles um das Spiel Tic-Tac-Toe. Wir haben wie verrückt Ruby Code getippt und – so hoffe ich – fleißig Tic-Tac-Toe gespielt, zu zweit am und gegen den Computer. Der ist im Verlauf unserer Tätigkeiten ziemlich stark geworden. Irgendwie macht es dann mit der Zeit keinen Spaß mehr, weil man ja sowieso schon weiß, dass es wieder mal auf ein Unentschieden hinaus läuft.
Hier nochmal alle Lektionen zu dem Spiel im Überblick.- Lektion 11 – Tic-Tac-Toe, Der Anfang
- Lektion 12 – Tic-Tac-Toe, Eingabe von Zügen
- Lektion 13 – Tic-Tac-Toe, Wer gewinnt?
- Lektion 14 – Tic-Tac-Toe gegen den Computer
- Lektion 15 – Tic-Tac-Toe, Computer unschlagbar?
Und jetzt? Wir schauen uns in dieser Lektion etwas an, wovon sicher viele meinen, ich hätte es dir schon eher sagen sollen.
St. Martin - Captain Future war auch da! 1
Nix Tic-Tac-Toe, nix Ruby, sondern: es ist St. Martin und wir basteln eine Laterne! Naja, vielleicht auch zwei, die irgendwie über einen Versorgungsgang miteinander verbunden sind, mit Solarsegeln, Protonenantrieb für den Spiralflug, Xenonbeleuchtung und Lautsprecher zum Anschließen eines MP3-Players für den passenden Sound ? Fertig ist die St. Martinslaterne von rubykids.de, die Comet des Captain Future, von mindestens zwei Kindern zu tragen:
Lektion 15 - Tic-Tac-Toe, Computer unschlagbar? 2
Dein Computer verliert noch häufig beim Tic-Tac-Toe. Das wollen wir mit dieser Lektion ändern. Du machst ihn zu einem stärkeren Gegner, der bei der Wahl seiner Züge auch den aktuellen Spielstand mit berücksichtigt. Wo er mit dem nächsten Zug gewinnen kann, wird er es tun, andernfalls sucht er sich gute Felder für seine Züge aus.
Lektion 14 - Tic-Tac-Toe gegen den Computer
Dein Computer gehorcht dir bisher prima bei der Ausführung des Rubyprogramms Tic-Tac-Toe. Er fühlt sich aber etwas einsam, weil er nicht wirklich mitspielen darf. Das wollen wir in dieser Lektion ändern – der Computer darf Tic-Tac-Toe spielen! Er wird in dieser Lektion aber noch kein Profi werden. Wir sind zufrieden, wenn er überhaupt mitspielt, auch wenn man ihn noch sehr gut besiegen kann.
