Programmier-Challenge: Qix in BASIC V2

Es gibt 459 Antworten in diesem Thema, welches 43.652 mal aufgerufen wurde. Der letzte Beitrag (18. März 2024 um 20:16) ist von 1570.

  • Ich bin ehrlich gesagt etwas überrascht und "schockiert", dass keiner der Compiler das BASIC-Programm einwandfrei lauffähig übersetzen kann. =O

    Doch, Blitz! und (nach meiner kleinen Korrektur) MOSpeed. Aber ehrlich: Wenn denkt denn auch, dass jemand 10 Einträge aus einer nicht existierenden Datei liest...also ich tat das nicht...;)

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Und "." als "0" zu missbrauchen, das muss ein Compiler auch erst mal verstehen.


    Ehrlich gesagt wusste ich nicht mal, dass das geht!

    Und, ich frage mich, warum macht man das?

    Ist es schneller?

    Der Interpreter liest da und dort ein Zeichen ... ???


    Jedenfalls grandiose Leistung!!

    Bin schwer beeindruckt

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Und, ich frage mich, warum macht man das?

    Ist es schneller?

    Ja.

    Aber nur im Interpreter. Und das ist hier ja eigentlich egal.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Und "." als "0" zu missbrauchen, das muss ein Compiler auch erst mal verstehen.

    In DATA-Zeilen wird das noch besser...hier, alles Nullen:

    Code
    10 for i=1 to 4
    20 read a:print a:next
    30 data 0, ,.,e

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • EgonOlsen71 Fehlt noch unser aller Lieblingscompiler! Der BASS!

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Aber ehrlich: Wenn denkt denn auch, dass jemand 10 Einträge aus einer nicht existierenden Datei liest...

    Das weiß doch jeder, dass man immer 16 Einträge aus einer nicht existierenden Datei lesen muss! :prof:

  • Aber ehrlich: Wenn denkt denn auch, dass jemand 10 Einträge aus einer nicht existierenden Datei liest...also ich tat das nicht... ;)

    Ja, da hatte ich offensichtlich verfrüht den "Wird schon gut sein"-Stempel draufgeklatscht :D. Werd' ich gleich noch nachbessern. Danke für den Hinweis.

  • So, restliche Compiler auch noch erwähnen, das brauch ich jetzt :D

    Ich habe aber für meine Tests Zeilen 810-830 gelöscht, die machen ja eh wenig Sinn (GOSUB in 30 natürlich angepasst)

    Speedcompiler

    Hypra-Comp

    Steigt in 1720 aus mit "Illegalem Befehl" - vermutlich "RUN".

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Aber ehrlich: Wenn denkt denn auch, dass jemand 10 Einträge aus einer nicht existierenden Datei liest...also ich tat das nicht... ;)

    Ja, da hatte ich offensichtlich verfrüht den "Wird schon gut sein"-Stempel draufgeklatscht :D. Werd' ich gleich noch nachbessern. Danke für den Hinweis.

    Aber das ist ja valide, was du da machst. Mir war nur nicht klar, was dann passiert und entsprechend hatte ich das falsch bzw. gar nicht behandelt. Du könntest einfach eine vordefinierte Hi-Datei auf der Disk ablegen. Dann ist das Thema ja keines mehr.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • So, restliche Compiler auch noch erwähnen, das brauch ich jetzt :D

    Einen hab' ich noch...

    Laser Basic Compiler: Läuft ziemlich langsam, kann mit dem Laden aus nicht vorhandener Datei nicht umgehen und erzeugt entsprechend Quatscheinträge in der Highscore. Stürzt aber immerhin nicht ab dabei wie Austrocomp.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Aber das ist ja valide, was du da machst. Mir war nur nicht klar, was dann passiert und entsprechend hatte ich das falsch bzw. gar nicht behandelt. Du könntest einfach eine vordefinierte Hi-Datei auf der Disk ablegen. Dann ist das Thema ja keines mehr.

    Ist ja einfach, den Status abzufragen. Habe das nun so gelöst. Ist sicher eleganter:

    Code
    2270 rem ===================================
    2280 rem = initialize/load high score list =
    2290 rem ===================================
    2300 hs=100000:fori=1to9:hs(i)=hs:hs=hs-10000:hs$(i)="qixchampion":next
    2310 open1,8,0,"hi,s":ifst<>64thenfori=1to9:input#1,hs(i):input#1,hs$(i):next
    2320 close1:return
  • QIXSCII ist nun auch auf meiner itch.io Seite publiziert. D.h. dort wird dann sicher die neueste Version drauf zu finden sein.

    Bitte melde dich an, um diesen Link zu sehen. bzw.
    Bitte melde dich an, um diesen Link zu sehen.

  • Snoopy:

    Kannst du mir das folgende BASIC-Programm für den Commodore C64 in Assemblercode für den C64 umwandeln?

    Code
    10 INPUT A
    20 INPUT B
    30 PRINT A+B

    Wie gibt man denn bei ChatGPT mehrere Zeilen ein, oder dass er immer gleich jede Zeile einzeln absendet? :|

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • Ich habe aber für meine Tests Zeilen 810-830 gelöscht, die machen ja eh wenig Sinn

    Nunja. Sinnlos vielleicht für den Compiler, aber für den Interpreter kann das einen entscheidenden Unterschied ausmachen. Wenn man große Arrays anlegt und später eine Variable erkannt wird, für die noch kein Platz reserviert wurde, dann muss der Interpreter den ganzen Array nach hinten verschieben, um die eine Variable im Speicher anzulegen. Bei der nächsten, dasselbe Spiel. Siehe Bitte melde dich an, um diesen Link zu sehen. .

    Dieses Beispiel dauert 115 Jiffies...

    Code
    10 ti$="000000"
    20 dim s%(8000):a=1:b=2:c=3:d=4:e=5:f=6
    30 printti

    Dieses hier mit den DIMs nur 13(!) Jiffies...

    Code
    10 ti$="000000"
    20 dim a,b,c,d,e,f,s%(8000):a=1:b=2:c=3:d=4:e=5:f=6
    30 printti

    Bei meinen 26+ Variablen hat das ohne Deklaration sicher 2 Sekunden gedauert, bevor das Titelbild angezeigt wurde.
    Außerdem kann ich so sicherstellen, dass die Variable "a" die schnellste im Zugriff ist, weil ganz am Anfang der Suche.

  • Nunja. Sinnlos vielleicht für den Compiler, aber für den Interpreter kann das einen entscheidenden Unterschied ausmachen.

    Klar. Aber viele Compiler verstehen das nicht. Manche steigen komplett aus, andere (Basic64 z.B.) meckern zwar, machen aber weiter.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • Nunja. Sinnlos vielleicht für den Compiler, aber für den Interpreter kann das einen entscheidenden Unterschied ausmachen.

    Klar. Aber viele Compiler verstehen das nicht. Manche steigen komplett aus, andere (Basic64 z.B.) meckern zwar, machen aber weiter.

    So ist es sicher Compiler-freundlicher (siehe Quellcode unten) und hat denselben Effekt.
    Also Variablen am besten immer vor Arrays initialisieren.
    Variablen ohne Initial-Wert, dann einfach mit g=. bzw. g=0 zuweisen.

    Code
    0 ti$="000000"
    20 a=1:b=2:c=3:d=4:e=5:f=6:dims%(8000)
    30 printti
  • Wie gibt man denn bei ChatGPT mehrere Zeilen ein, oder dass er immer gleich jede Zeile einzeln absendet? :|

    Mit der Tastatur! :D


    Statt RETURN, für eine neue Zeile ohne Absenden SHIFT+RETURN drücken. ;)

    Oh, ich hatte ALT+RETURN probiert. :rolleyes:

    Habe nochmal aus Neugier deine exakte Fragestellung wiederholt, und es kam tatsächlich etwas anderes, allerdings noch Bekloppteres dabei heraus. Wollte es hier posten, aber das lasse ich jetzt lieber mal...

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke