Archiv der Kategorie: Spaß

Klein aber fein – der MiniGameJam in Dortmund

Am 10.06.2017 fand der erste Game Jam in Dortmund statt – noch ein wenig zaghaft als Mini Game Jam tituliert. An einem sonnigen Samstag fanden sich ca. 20 interessierte Entitäten im Dortmunder Künstlerhaus direkt hinter dem Hauptbahnhof ein, um in nur acht Stunden ein vollständiges Spiel zu programmieren. Nach einer kurzen Kennenlernrunde haben sie Teams gebildet und konnten ein Thema aus den Vorschlägen „Familie“, „Grenzen überwinden“, „old school“ und „Zwei Buttons“ auswählen.

Ich selbst bildete mit Reinhard und Miriam ein Team, das mit keiner konkreten Idee für ein Spiel, aber für dessen Ausgabemedium startete.

Wir wollten ein Oszilloskop als Bildschirm verwenden. Normalerweise werden diese Geräte benutzt, um Wechselspannungen in Kurven zu visualisieren. Wenn man den Elektronenstrahl jedoch geschickt umlenkt und als analoges Signal auf zwei Eingangskanäle sendet, kann im XY-Betrieb faktisch Beliebiges auf dem Geräte dargestellt werden – soweit zumindest die Theorie. Wir haben einen Digtial-Analog-Wandler aus Widerständen erstellt und mit einem RaspberryPi angesteuert. Damit waren wir in der Lage, eine bescheidene Auflösung von 32×64 Bildpunkten auf dem Gerät darzustellen. Bei höheren Auflösungen flackerte das Bild aus Gründen, die wir in der kurzen Zeit nicht ergründen konnten wollten.

Nach ca. drei Stunden konnten wir beliebige Punkte auf dem Gerät positionieren und uns (endlich) um eine Spielidee kümmern. Wenig kreativ und motiviert durch die technischen Einschränkungen entschieden wir uns für eine Abwandlung des bekannten Spiels „flappy bird“, in dem ein Vogel zwischen Röhren hindurch manövriert werden muss. Gesteuert wird der Vogel mit nur einem Taster: beim Drücken fliegt der Vogel hinauf, lässt man den Button wieder los, sinkt er wieder. Diese Steuerung haben wir über eine kleine Platine mit zwei Tastern realisiert – der zweite Taster konnte das Spiel nach einem Game Over neu starten.

Da noch etwas Zeit übrig war, konnten wir uns Gedanken über eine Audioausgabe machen. Diese erfolgte über zwei kleine „Lautsprecher“, die wir ebenfalls über den Raspberry Pi angesteuert haben.

Das Projekt ist inklusive des Quelltextes bei github unter dem Namen osziflap abrufbar.

Am 7.10.2017 geht es (vielleicht?) weiter mit dem nächsten Game Jam – vielleicht nicht mehr Mini, vielleicht wieder in Dortmund, gewiss aber wieder mit mir.

 

Ein Programm, das den eigenen Quelltext ausgibt

icon_commandline

Ein Quine ist ein Programm, das den eigenen Quelltext ausgibt. Dabei darf nicht auf Dateioperationen zurückgegriffen werden. Sonst wäre es zu einfach. Dann könnte man einfach nur die Datei ausgeben, die den Quelltext enthält.

Das schöne an dieser Aufgabenstellung ist, dass sie zunächst sehr einfach und nach ein paar Versuchen faktisch unmöglich erscheint. Für ein C#-Programm habe ich einen solchen Quine einmal selbst programmiert. Es ist nicht die kürzeste Version, aber sie stellt recht gut das Prinzip dar, nach dem derartige Programme aufgebaut sind: Daten und Programm werden getrennt. Das Programm ist hierbei jedoch auch Teil der Daten.

    class MainClass {
        static string[] daten = {
            "  public static void Main(string[] args) {",
            "    Console.WriteLine(\"class MainClass{\");",
            "    Console.WriteLine(\"  static string[] daten = {\");",
            "    for (int i=0; i<daten.Length; i++) ",
            "      Console.WriteLine(\"  \\\"\"+daten[i]+\"\\\",\");",
            "    Console.WriteLine(\"  };\");",
            "    for (int i=0; i<daten.Length; i++)",
            "      Console.WriteLine(daten [i]);",
            "  }",
            "}" };

        public static void Main(string[] args) {
            Console.WriteLine("class MainClass{");
            Console.WriteLine("  static string[] daten = {");
            for (int i=0; i<daten.Length; i++)
                Console.WriteLine("  \"" + daten[i] + "\",");
            Console.WriteLine("  };");
            for (int i=0; i<daten.Length; i++)
                Console.WriteLine(daten [i]);
        }
    }

Spieleprogrammierung mit Unity – Teil 2: Farbe kommt ins Spiel

Unser Spiel aus dem ersten Teil funktioniert im Prinzip schon, sieht aber noch gar nicht schön aus. Daher werden wir im nächsten Teil etwas Farbe und Texturen in die Hand nehmen und die Landschaft anschaulich gestalten. Außerdem kümmern wir uns darum, dass die Kugeln sich auch bewegen und wie echte physikalische Objekte verhalten.

Alle Videos im Wiki

Das virtuelle Trampolin – Bauen und Programmieren in SecondLife

Gestern Abend war ich in der Schule – aber in keiner gewöhnlichen Schule, sondern der SecondLife-Schule. Hier lernt man den Umgang mit SecondLife – das ist eine virtuelle Welt, die von allerlei Avataren seit nun über 10 Jahren bevölkert wird.

Auf dem Stundenplan stand „Trampolin bauen“. Da ich vor vielen Jahren das letzte mal bei SecondLife unterwegs war und mir den Stand dieses Projektes noch einmal genauer anschauen wollte, beschloss ich also, abends um 21 Uhr die Schulbank zu drücken und eine Lektion zu nehmen im Bauen und Programmieren von Objekten für die virtuelle Welt.

Ich war erstaunt, wie groß die Nachfrage war. Um Punkt 21 Uhr saßen ca. 20 andere Personen mit mir auf einer großen Freifläche.

2013-05-11-Trampolin_bauen-Snapshot_001

Weiterlesen

1000 Spamkommentare

Nach meinem Blogumzug am 24.05. dauerte es nicht lange bis auch Spambots auf mein Blog aufmerksam wurden. Gerade eben habe ich den 1000. Spamkommentar aussortiert. Der Gewinner heißt „ftnbyfmCjR“ und sein lyrischer Gewinnerbeitrag lautet

Your Domain Name tramadol for dogs addictive – tramadol hcl vs tramadol

Herzlichen Glückwunsch!

Ich konnte den Kommentar leider nicht freischalten, da er keinerlei Bezug zum Posting hatte – schade.

Zahlencodes in Numeronymen

Ein Numeronym ist eine Kombination aus Buchstaben und Ziffern – so wie in R2D2 oder C-3PO. Programmierer kennen sicher auch noch I18n für Internationalization – erst ein „I“, dann folgen 18 Buchstaben und dann ein „n“. Mediziner wagen sich mit P45 akrobatisch weit nach vorn.

Jetzt wisst ihr hoffentlich auch, warum mein Blog so einen seltsamen Namen hat. 🙂

Frohes neues Jahr

Ein Tweet von @apfelkasten begrüßt das neue Jahr mit einer interessanten Eigenschaft:

Könnt ihr das mt einem kleinen Programm überprüfen? Dann ab damit in die Kommentare. 🙂 Hier ist z.B. eine Variante in Smalltalk:

2013 to: 1900 by: -1 do: [:jahreszahl |
  ziffern := Set new.
  jahreszahl asString do: [:ziffer | ziffern add: ziffer].
    (ziffern size) = 4
      ifTrue: [Transcript
                  show: jahreszahl;
                  cr]]

In diesem Sinne: Ein frohes neues Jahr!