image image


image

Retrogaming mit der Retro-Konsole: Ein Irrgarten in TIC-80

Ich bin Euch noch das Ergebnis meiner ersten ernsthaften Versuche mit der kleinen Fanatsiekonsole TIC-80 vom letzten Wochenende schuldig. Ich habe nicht viel mehr angestellt, als eine optisch etwas aufgehübschte Version des Video-Tutorials Nummer 23 – Flags und fget in map vom Potato Imaginator zu produzieren. Und nachdem ich meine Probleme mit den Klammern und der deutschen Tastatur gelöst hatte, hat es sogar Spaß gemacht und die Lust auf mehr in mir geweckt.

Der (Lua-) Quellcode ist relativ trivial (auf den Abdruck der Metadaten habe ich verzichtet):

px, py = 1, 1  -- Player x,y position
dir = -1

dir_x = {[0] = 0, 0, -1, 1}
dir_y = {[0] = -1, 1, 0, 0}


function TIC()
 cls()
 map()
 spr(258, 8*px, 8*py, 0)
 
 if btnp(0) and fget(mget(px, py - 1), 0) == false then      -- UP
    dir = 0 
 elseif btnp(1) and fget(mget(px, py + 1), 0) == false then  -- DOWN
    dir = 1
 elseif btnp(2) and fget(mget(px - 1, py), 0) == false then  -- LEFT
    dir = 2
 elseif btnp(3) and fget(mget(px + 1, py), 0) == false then  -- RIGHT
    dir = 3
 end
 
 if dir ~= -1 then
    px = px + dir_x[dir]
    py = py + dir_y[dir]
 end
 
 dir = -1
end

Ziemlich genial – zumindest ich kannte diesen Trick noch nicht – ist es, die möglichen Bewegungsrichtungen für die Horizontale wie für die Vertikale je in einer Tabelle (dem Lua-Äquivalent für Pythons Listen) abzulegen. So kann die nächste Bewegung einfach mit

 if dir ~= -1 then
    px = px + dir_x[dir]
    py = py + dir_y[dir]
 end

zugewiesen werden. Und bei den Tiles 2 und 3, die als nicht passierbare Mauern fungieren, habe ich im Sprite-Editor den flag[0] auf true gesetzt. fget() fragt die Flags der übergebenen Position ab und so konnte ich in je einer Zeile entscheiden, ob der nächste Zug des Spielers ein gültiger Zug sei, oder ob er an einer Mauer stehenbleiben muß.

image

Mit der Zeichnung des Player-Sprites habe ich mich schwergetan, mir fehlen dafür einfach die künstlerischen Fähigkeiten. Ich hoffe, es ist dennoch sichtbar, was ich ein den 8x8 Pixeln darstellen wollte:

image

Im Zweifelsfalle – und wenn es schnell gehen muß – werde ich es wohl in Zukunft wie der Potato Imaginator halten und auf das lächelnde Quadrat als Player-Sprite zurückgreifen. Das ist schnell erstellt und jeder sieht sofort, was gemeint ist.

In diesem Zusammenhang: Weiß jemand von Euch da draußen, wie man extern (zum Beispiel mit Piskel) erstellt Sprites in TIC-80 importieren kann?

Alles in allem hat die Spielerei mit der kleinen Fantasiekonsole mir viel Spaß gemacht. Man merkt deutlich, daß die API auf die Erstellung von Spielen optimiert ist (siehe fget()) und man daher mit sehr wenigen Zeilen Code auskommt. Ich hätte große Lust, das kleine TIC-80 in mein Projekt »Retrogaming und Künstliche Intelligenz« einzubinden – auch wenn ich dann mit Sicherheit an Kapazitätsgrenzen stoßen werde. Aber in der Beschränkung liegt ja bekanntlich die Kraft. 🤖 Still digging!


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, 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

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image