Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
z9001:software:blocks [2021/01/15 07:27] – angelegt volkerpz9001:software:blocks [2021/01/19 11:27] (aktuell) volkerp
Zeile 10: Zeile 10:
 | Dateiname | BLOCKS.COM bzw. SCHIEB.COM | | Dateiname | BLOCKS.COM bzw. SCHIEB.COM |
 | Laden in | OS | | Laden in | OS |
-| Programmstandort | 300h-3FFFh |+| Programmstandort | 300h-3FFFh bzw. 300h-11FFh |
 | OS-Kommando | BLOCKS bzw. SCHIEB | | OS-Kommando | BLOCKS bzw. SCHIEB |
  
-Das Programm wird im OS geladen. Es wird kein RAM-Modul und kein BASIC benötigt.+Das Programm wird im OS geladen. Es wird kein RAM-Modul und kein BASIC benötigt. Eine Farberweiterung wird optional unterstützt. 
 + 
 +====== Download ====== 
 + 
 +  * {{ :z9001:software:blocks-bin.zip |}} Programm Version 18.1.2021 
 +  * {{ :z9001:software:blocks.zip |}} die kompletten Sourcen
  
 ====== Bedienung ====== ====== Bedienung ======
Zeile 19: Zeile 24:
 Ziel des Spiels ist es, den gefüllten Spielstein aus dem Spielfeld herauszuschieben. Dazu müssen die Spielsteine (Blöcke) verschoben werden. Waagerechte liegende Steine können nur waagerecht verschoben werden, senkrechte Steine nur senkrecht. Ziel des Spiels ist es, den gefüllten Spielstein aus dem Spielfeld herauszuschieben. Dazu müssen die Spielsteine (Blöcke) verschoben werden. Waagerechte liegende Steine können nur waagerecht verschoben werden, senkrechte Steine nur senkrecht.
  
-Die Spielsteine werden mit dem "Wordstar-Kreuz" angewählt und und mit Shift+Wordstar-Tasten verschoben.+Die Spielsteine werden mit dem "Wordstar-Kreuz" angewählt und und mit Shift+Wordstar-Tasten verschoben.\\ 
 +Alternativ kann man die Cursortasten nutzen. Dann gibt es eine abweichende Bedienung. 
 +Mit Space oder Enter wechselt man zwischen Selektieren und Bewegen.((Die Nutzung der Cursortasten mit gedrücktem Shift zum Bewegen ist leider nicht ohne eigene Tastaturroutine machbar.))
  
 <code> <code>
-     E +                  ohne Shift - Stein auswählen              hoch            Leertaste wechselt zwischen 
-     ^ +                  mit Shift  - Stein bewegen                  ^             Stein auswählen und bewegen 
-     | +                                                                      
-S <--+-->+S <--+-->                                           links <--+--> rechts 
-     | +                                                                      
-     v +                                                                      
-     X+                                                            runter        
 </code> </code>
  
-Alternativ kann man die Cursortasten nutzen. Dann gibt es eine abweichende Bedienung. 
-Mit Space oder Enter wechselt man zwischen Selektieren und Bewegen.((Cursortasten mit Shift zum Bewegen ist leider nicht ohne eigene Tastaturroutine machbar.)) 
    
 Die intelligente Steuerung soll zum nächstliegenden Stein in der gewünschten Richtung wechseln. Die intelligente Steuerung soll zum nächstliegenden Stein in der gewünschten Richtung wechseln.
Zeile 64: Zeile 69:
 D164002 D174007 D180008 D19000D H22C013 D164002 D174007 D180008 D19000D H22C013
 </code> </code>
 +
 +====== Internes ======
 +
 +Das Spiel an sich ist nicht sonderlich kompliziert zu programmieren. Es enthält keine komplexen Algorithmen. Über ein paar Sachen muss man sich aber trotzdem Gedanken machen:
 +  * Die Orignal-App ist 16 MByte groß und nutzt eine Datenbank mit den Puzzles. Wie komprimiert man die Puzzles so, dass möglichst viele in 16K RAM passen?
 +  * Zum Weiterspielen sollte man den Spielstand speichern. Ich habe mich für die Eingabe der geschafften Puzzle-Nummer entschieden. Dazu musste ich mir ein Verfahren ausdenken, um Puzzle-Codes zu erzeugen und auch wieder zu dekodieren. Die Codes sollen möglichst zufällig sein, damit sie nicht erraten werden können.
 +  * Die Original-App wird mit dem Finger bedient. Wie baut man eine sinnvolle Steuerung mit Tasten?((Ich ermittle die nächstliegende Taste in der gewünschten Richtung mittels Berechnung der euklidischen Distanz (x1-x0)^2+(y1-y0)^2. Das klappt meist, manchmal ist die Bedienung aber unlogisch, da vom oberen linken Punkt eines Steins ausgehend gerechnet wird und nicht vom Schwerpunkt aus.))
 +  * Die Oberfläche wurde mit [[z9001:software:paintbox|]] erstellt, anstatt diese zu programmieren. Das komprimierte Bild wird einfach eingebunden.
 +
 +====== Z1013 ======
 +
 +A. Ziermann hat das Programm an den Z1013 adaptiert:
 +
 +{{https://www.robotrontechnik.de/bilder/Upload_Forum/z0_dmg.png}}
 +
 +Download: https://github.com/anchorz/symbolic-disassembler/raw/master/Blocks/obj/z1013/blocks.z80
  
  • z9001/software/blocks.1610695654.txt.gz
  • Zuletzt geändert: 2021/01/15 07:27
  • von volkerp