Kleine BASIC-Compo fuer zwischendurch: Draw The Frog

There are 276 replies in this Thread which has previously been viewed 47,696 times. The latest Post (April 25, 2017 at 9:07 PM) was by Chagizzz.

  • Die Lösung von Please login to see this link. finde ich auch außergewöhnlich. Vielleicht magst du es mal etwas erklären.

    Es gibt ein paar die symmetrisch gezeichnet werden, z.B. die Version von Please login to see this link. wenn ich mich richtig erinnere, und bestimmt nochmal 1-2 andere.

    Aber mit Pupillenkorrektur. :)

    1 A$="_×33- !!!#ÃÓÖÕÐÓÁÁÁÓ___!___?//__"
    2 DEFFNZ(X)=(ASC(MID$(A$,X,1))-32ANDM)>0:FORI=1TO17:M=1:FORN=0TO5:A=-FNZ(I)
    3 A=A-FNZ(I+17)*2:A=A-(A>1)*3:X=N*2+C:GOSUB5:X=26-N*2-C:GOSUB5:M=M*2:NEXT
    4 P=P+40:NEXT:A=1:P=44:GOSUB5:P=P+2:A=0:GOSUB5:END
    5 FORC=0TO1:POKE1190+P+X+C,160:POKE55462+P+X+C,A:NEXT:RETURN

    Meine Lösung sieht vielleicht etwas kompliziert aus, ist sie aber eigentlich nicht. Man merkt aber, dass ich normalerweise lieber Assembler statt BASIC programmiere. ;)

    Die Farben sind in A$ kodiert, jeweils 2 Bit pro Froschpixel, 6 Bit pro String-Zeichen und 2 String-Zeichen pro Froschzeile (2 Bit bleiben in jedem Zeichen ungenutzt, damit keine ungültigen Basic-Zeichen entstehen). Da der Frosch prinzipiell symetrisch ist, wird nur eine Hälfte codiert. Damit die Bits einfacher extrahiert werden können, werden die beiden Farb-Bits für jeden Pixel getrennt gespeichert (das erste Bit in den ersten 17 Byte, das zweite Bit in den zweiten 17 Byte).

    Die Funktion Z(X) holt einen Pixel aus dem String (Zeichenposition P und Bitposition M). Das Unterprogramm in Zeile 5 zeichnet einen Pixel.
    In Zeile 4 nach dem NEXT wird das rechte Auge korrigert, was vermutlich mehr Speicher braucht, als man bei der symetrischen Kodierung einspart. Aber ich fand's lustig.

    Die Kodierung der Farben ist einigermaßen effizient, das Zeichnen weniger. Ich habe mir auch nicht die Mühe gemacht, noch mal ein paar Bytes einzusparen, weil die Lösung mit 259 Bytes sowieso nicht in der 150-Byte-Liga mitspielt. :D

    Meine Lösung ähnelt übrigens sehr stark der von ZeHa. Allerdings nutze ich zur Korrektur der 2-Bit-kodierten Farbwerte keinen 4-Zeichen-String sonden die Formel: A=A-(A>1)*3. Dafür müssen die Farben genau so kodiert sein, dass die Formel funktioniert.

    Please login to see this link.

    Edited 8 times, last by detlef (April 21, 2017 at 8:50 AM).

  • Please login to see this link. okay vielen Dank fuer diese Info :)

    Ich werde schauen dass ich heute im Laufe des Tages die Sieger verkuende :D

    - neue Spiele für den C64 -
    Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • Hi Zeha, hast Du schon deine Sieger festgelegt?

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link.

  • Nee, aber ich weiss, ich sollte das langsam mal tun :D
    Hab nur grad viel anderes um die Ohren aber ich werd schauen dass ich das jetzt dann demnächst erledigt haben werde :D

    - neue Spiele für den C64 -
    Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • So, leider hat es jetzt doch noch alles etwas laenger gedauert, da ich etwas viel um die Ohren hatte. Aber ich moechte das ganze natuerlich noch zu einem vernuenftigen Abschluss bringen und verkuende hiermit nun

    -=das Ergebnis=-

    Please login to see this picture. Please login to see this picture. Please login to see this picture. Please login to see this picture. Please login to see this picture.


    Kategorie "kuerzester Code" (alle Angaben in PRG-Groesse):
    - 1. Platz: Please login to see this link. (126 Byte) - kuerzeste Variante von allen
    - 2. Platz: Please login to see this link. (166 Byte) - kuerzeste Variante mit "ordentlichem" BASIC
    - 3. Platz: Please login to see this link. (168 Byte) - kuerzeste Variante die sich auf einem C64 direkt eintippen laesst

    Anmerkung: Die genannten User haben teilweise auch kuerzere Varianten im Gepaeck, die aber nicht den oben genannten Kriterien entsprechen; auch gibt es dazwischen noch weitere Beitraege von anderen Usern - kurzum, es sind mit Ausnahme von Platz 1 nicht die drei generell kuerzesten Varianten. Auch existiert eine inzwischen korrigierte Fassung von Please login to see this link., diese konnte jedoch nicht mehr in die Bewertung aufgenommen werden, da die Compo bereits beendet war. Dennoch grossen Respekt an alle anderen kurzen Varianten!

    Kategorie "schoenstes Ergebnis":
    - 1. Platz: Please login to see this link. - fliegende Pixel-Partikel ergeben nach und nach einen Frosch
    - 2. Platz: Please login to see this link. - Frosch sieht sich skeptisch mit schlitzfoermig geoeffneten Augen nach links und rechts um und tappt dabei mit den Zehen
    - 3. Platz: Please login to see this link. - Obama-farbiger Frosch wird aus vorberechneten Random-Werten generiert


    Kategorie "Sonderpreis":
    - Ehrenplatz: Please login to see this link. - lustige Ideen; zig verschiedene Einsendungen; ueberfahrener Zufallsfrosch; Inspirationsquelle fuer Please login to see this link.

    ---

    Auch wenn es schon oft gesagt wurde, nochmals vielen Dank an alle Teilnehmer, ich habe wirklich nicht damit gerechnet, dass so viele mitmachen. Viel Spass noch beim Studieren der Fremd-Codes und hoffentlich gibt es bald mal wieder eine interessante Compo :thumbup:

    Die Gewinner duerfen sich per PM bei mir melden und sich aussuchen ob sie eines der beiden Please login to see this link. haben moechten oder lieber mit einer Please login to see this link. vorlieb nehmen moechten. :weihnachten:

    - neue Spiele für den C64 -
    Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

    Edited once, last by ZeHa (April 24, 2017 at 11:57 AM).

  • Zufallsfrosch; Inspirationsquelle fuer Please login to see this link.

    Eher nicht :wink:
    Die Idee eines RANDOM results auf das man im Zweifel beliebig lange warten muss gibt es quasi bei jeder Compo.
    Meist wird genau das mit 'endlicher Ausfuehrungszeit' explizit verhindert. Neu ist, dass es jemand auch wirklich konsquent durchfuehrt und noch dazu soweit optimiert dass es NICHT auf Zufall + Warten hinauslaeuft.
    Auch nicht wirklich neu, wenn man sich Unseens Signatur ansieht :wink:

    Please login to see this link.
    Please login to see this link.
    Please login to see this link.

  • Kscht enthusi!!

    Erstmal applaudieren, war echt eine schöne, interessante Compo! Gerne mehr davon :)

    C64Studio: Please login to see this link. - Please login to see this link. --- C64Studio WIP: Please login to see this link. - Please login to see this link. --- Please login to see this link.

  • mag durchaus sein dass Unseen auch ohne Vernunftmensch draufgekommen wäre, ich hatte aber trotzdem den Eindruck dass er überhaupt nur deshalb vllt auf die Idee gekommen sein könnte, mitzumachen ;) aber wie auch immer, ist ein echt cooler Beitrag :)

    - neue Spiele für den C64 -
    Please login to see this link.Please login to see this link.Please login to see this link.Please login to see this link.

  • Glückwunsch an die Gewinner - freut mich natürlich sehr, dass ich es auf den dritten Platz geschafft habe.

    Vielen Dank nochmal an ZeHa und auch an alle anderen Teilnehmer!

  • mag durchaus sein dass Unseen auch ohne Vernunftmensch draufgekommen wäre, ich hatte aber trotzdem den Eindruck dass er überhaupt nur deshalb vllt auf die Idee gekommen sein könnte, mitzumachen ;) aber wie auch immer, ist ein echt cooler Beitrag :)

    Na ja, das Ende war so praktisch hinter dem Osterwochenende terminiert, warum früher anfangen? =) Nur die Vorberechnung der möglichen Sequenzen musste ich etwas früher anstossen, aber das hätte ich bei Zeitproblemen auch noch irgendwie parallelisiert bekommen.

    (wäre mal eine gute Gelegenheit gewesen, meine BOINC-Server-Instanz wieder zu aktualisieren ;) )

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Please login to see this link. - Please login to see this link. - Please login to see this link.

  • Auch von mir herzlichen Glückwunsch an dir Gewinner. Die eingereichten Beiträge sind echt der Hammer. Man kann so einigen daraus lernen. Auch riesigen Dank an Please login to see this link. für das Ausrichten der Competition. Hat sehr viel Spass gemacht. Bitte demnächst wieder eine! :)

  • Vielen Dank für die schöne Combo. Die kürzesten Codes sind echt toll.

    Meine Zufallsfroschversion die komplett auf Zufall basiert mit 62 Byte wurde doch garnicht mit reingenommen. Sage ich nur weil einer meinte, das sei mein Zufallsfrosch. Nein beim meinem neuen überfahrenden Zufallsfrosch habe ich wie Unseen in den Pseudozahlen mit CPU-Power gesucht.

    Würde mich freuen wenn Unseen wirklich durch mich ein bißchen insperiert wurde. :)

  • Auch von mir nochmal vielen Dank für die Compo. Hat viel Spaß gemacht :)

    Wissen ist das einzige Gut, das sich beim Teilen vermehrt. Also seid vorsichtig damit!

  • Auch allen Gewinnern herzlichen Glückwunsch von mir, die Compo hat mir auch sehr viel Spass gemacht. :D:)

    "Kaum zu fassen, das bei jedem Menschen, dessen Schädel man nach seinem Tod öffnete, ein Gehirn gefunden wurde".

    Unbekannt


    Meine Projekte : Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link., Please login to see this link.

  • -=das Ergebnis=-
    Please login to see this picture. Please login to see this picture. Please login to see this picture. Please login to see this picture. Please login to see this picture.

    Kategorie "kuerzester Code" (alle Angaben in PRG-Groesse):
    - 1. Platz: Please login to see this link. (126 Byte) - kuerzeste Variante von allen
    - 2. Platz: Please login to see this link. (166 Byte) - kuerzeste Variante mit "ordentlichem" BASIC
    - 3. Platz: Please login to see this link. (168 Byte) - kuerzeste Variante die sich auf einem C64 direkt eintippen laesst

    Huch! Darauf hatte ich natürlich gehofft, aber dennoch befürchtet das sich alle - und i.d.R. auch versiertere - Basic-Kenner auf die Krone stürzen um kürzere Programme an den Start zu bringen. Das ist jetzt freilich eine unerwartete Ehre für mich! :woot:

    Da muss ich nun wohl auch spontan eine Dankesrede halten, oder?
    *Zettel aus der Tasche hol*
    "Ich bin kein großer Redner, deswegen bitte ich im Voraus um Entschuldigung dafür das ich mich kurz fasse. Und möglichererweise nicht jeden gebührend würdige, dem Würde gebührt. Aber der Reihe nach.
    Alles begann eines schönen Wintertages im Jahre des Herrn 1711. Der Wind war zornig an diesem Tag, meine Freunde! Doch ungeachtet des Windes zog mein Urururururururgroßvater freudestrahlend in den Wald hinaus um Feuerholz für sich und seine 835 Geschwister zu sammeln. Dumpf klang jeder Schritt in seinen Ohren, als er unter unheilvoll drohenden Wolken durch den frisch gefallenen Schnee stapfte!
    ... yada yada yada...
    Danke! Und jetzt hoch die Tassen!" :D

    Gratulation an alle Preisträger und Danke an alle Teilnehmer für die Codes!

    Auch von mir Gratulation an alle Teilnehmer! In den Beiträgen gibt es ja einiges zu entdecken! :):) :)

  • ... ich freue mich, dass ich es mit einer Lösung unter die "schönsten" geschafft habe. :dance

    War auf jeden Fall 'ne schöne Idee und schöne/interessante Lösungen.
    Wär ich irgendwie früher eingestiegen, hätte ich noch länger was von gehabt :D

    carrier lost...

    atdtums.pm:64000

    CONNECT - UNDERGROUND MAIL SYSTEM -