Collab: Entwicklung eines TSB-Puzznic-Klons

Es gibt 1.089 Antworten in diesem Thema, welches 110.340 mal aufgerufen wurde. Der letzte Beitrag (1. November 2024 um 23:56) ist von Omega.

  • Hier ist die erneuerte Version des Programms. Laden und Starten mit

    Code
    load"*",8,8
    sys32777
    load"demonblock010"
    run

    Ist zwar nicht das schnellste Programm auf der Welt. Aber ich denke es ist durchaus spielbar. Oder, was meint ihr?

  • Aber ich denke es ist durchaus spielbar. Oder, was meint ihr?

    Herrlich! Ich liebe es jetzt schon! :emojiSmiley-173:

    Zum Ladefehler: Du kannst die Ladezeile (auch die anderen, da musst du dann aber die richtigen Zahlenwerte für d!peek nachforschen) einfach ergänzen, z.B. so:

    440 ifd!peek($c000)=160thend!poke$897c,$bfff:elseprintat(lin,1)"kein x!":end

    Oder, wenn der Platz eng wird, mit st>0 statt d!peek($c000)=160.

    Dann droht keine Gefahr mehr.

    Arndt

    Edit: Die JOY-Abfrage könntest du - wegen der vielen (langsamen) IFs - vielleicht mit ON..GOSUB machen?

    GoDot C64 Image Processing
    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.
    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.

    2 Mal editiert, zuletzt von GoDot (28. Februar 2024 um 13:11)

  • Danke für die Tipss. Ich glaube der Cursor ist schon schnell genug. Wenn man ihn noch schneller macht, hat man die Steuerung vielleicht nicht mehr so gut im Griff. Oder? Was mich mehr stört ist, dass er nach dem Fallenlassen eines Steins relativ lange zu überlegen scheint. Aber ich kann keinen Grund dafür finden.

  • Ich hab mal zwei kleine Änderungen vorgenommen. Kommt mir vor, als käme die Reaktion jetzt schneller. Zuerst hab ich die Zeilen 2360 und 2365 ausgetauscht, d.H. jetzt kommt zuerst die Verzögerung und dann tut sich was:

    Code
    2360 : gl(18)=50:xpause
    2365 : x!step

    Und dann hab ich in der Prozedur "teilsetzen" den Fall gl(2)=0 (was war das noch?) so behandelt, dass auch im ELSE-Zweig der MAP-Befehl verwendet wird:

    Code
    1570 proc teilsetzen
    1580 if gl(2)>0 then do
    1590 : map gl(4)*2,gl(3)*2,chr$(gl(2)+34),fa%(0)
    1600 else
    1610 : map gl(4)*2,gl(3)*2," ",fa%(0)
    1620 done
    1630 end proc

    Oder trügt mich mein Gefühl?

    Arndt

    GoDot C64 Image Processing
    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.
    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.

  • Ich habe hier versucht das gl()-Array zu dokumentieren.

    Oh, wow! 8o

    Arndt

    GoDot C64 Image Processing
    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.
    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.

  • Edit: Die JOY-Abfrage könntest du - wegen der vielen (langsamen) IFs - vielleicht mit ON..GOSUB machen?

    In Bezug auf on ... goto und on ... gosub bin ich noch jungfräulich.

    Irgendwie erinnert mich das an Select Case ... End Select in Visual Basic. Aber wie funktioniert das eigentlich?

    Nehmen wir mal folgendes hypothetisches Beispiel an.

    Ich habe die Werte 7, 25, 52 und 73.

    Bei 7 will ich zu Zeile 1000 springen.

    Bei 25 will ich zu Zeile 2000 springen.

    Bei 52 will ich zu Zeile 3500 springen.

    Bei 73 will ich zu Zeile 4000 springen.

    Das geht gar nicht, oder? Das geht nur wenn der auszuwertende Ausdruck 1, 2, 3 oder 4 ist. Hmmm. :gruebel

  • Du könntest es ja so schreiben

    Code
    if a=7  then x=1
    if a=25 then x=2
    if a=52 then x=3
    if a=73 then x=4
    on x gosub 1000,2000,3500,4000

    jetzt mal so schnell aus der Hüfte geschossen

  • Bitte melde dich an, um diesen Link zu sehen. liefert genau die Werte 1 bis 8, was willst du mehr? :smile: (Auch deshalb kam ich drauf.)

    Arndt

    Edit: Und bitte, nimm GOSUB! Ich hasse GOTO... :X

    GoDot C64 Image Processing
    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.
    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.

  • Drachen: Ja, schon. Dann hat man aber wieder eine Reihe von IFs davor und was hat man dann gewonnen?

    GoDot: Ist mir auch aufgefallen (man glaubt es kaum). :) Ich habe mich nur gefragt, was man mit on sonst noch so anfangen kann. Wenn der auszuwertende Ausdruck nicht zufälligerweise eine lückenlos Reihe von Zahlen ergibt, nicht viel wie mir scheint.

  • Wenn der auszuwertende Ausdruck nicht zufälligerweise eine lückenlos Reihe von Zahlen ergibt, nicht viel wie mir scheint.

    Man kann das „trimmen“.


    Arndt

    GoDot C64 Image Processing
    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.
    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.

  • Doch, zurechttrimmen: Nehmen wir mal an, deine Werte stehen in der Variablen X. Dann könntest du deren Werte für ON so herrichten, dass es passt.


    o = (x+5)/25+1

    ON o GOSUB 1000, 2000,3500,4000


    Ergebnisse:


    7 -> 1

    25 -> 2

    52 -> 3

    73 -> 4

    Voilà!

    Arndt

    GoDot C64 Image Processing
    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.
    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.

  • Das ist wirklich sehr raffiniert. Und man braucht keine IFs dafür. Bleibt nur noch das klitzekleine Problem, dass man dafür ein Rechengenie sein muss. Vielleicht hilft's, wenn ich vorher meine Intelligenz-Tabletten nehme. Ach, wo sind die denn nur wieder? ?(

  • Also in Assembler hätte ich jetzt gesagt, dass die Rechnerei langsamer ist als ein Vergleich von 2 Zahlen? Gerade eine Division?

  • Da dürfen sich dann nur die Zahlen nicht mehr ändern.

    Zumal ich ja nicht weis wofür denn die Zahlen 7, 25, 52, 73 stehen :gruebel

    Kann man das auch mit dem Joystick koppeln?

  • Zumal ich ja nicht weis wofür denn die Zahlen 7, 25, 52, 73 stehen :gruebel

    Kann man das auch mit dem Joystick koppeln?

    Das sind nur irgendwelche ausgedachten Werte als Beispiel. In der Praxis braucht man so etwas früher oder später.

  • Hat jemand grafisches Talent? Ich bräuchte fünf Feen, die unterschiedlich stark aussehen.

    Vielleicht hat ja jemand Lust etwas für dieses Spiel zu pixeln.

    1.) Anfängerfee

    2.) Erfahrene Fee

    3.) Logikjongleurin

    4.) Puzzle-Magierin

    5.) Meisterin der Rätselreiche

    Bildgröße: 48x80 Pixel, Hires, keine Farben, BMP oder PNG

  • Da dürfen sich dann nur die Zahlen nicht mehr ändern.

    Man kann für jede (vor allem kurze) Zahlenreihe einen Algorithmus finden. Wie man's halt braucht...

    Jetzt soll's aber erstmal um Feen gehen (oh! reimt sich! :smile: ) :smile:

    Arndt

    GoDot C64 Image Processing
    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.
    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.