Block Script
Übersicht

![]() |
Silver_KneeBetreff: Block Script |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist BlockScript Eine etwas andere Scriptsprache. Als Input gibt es die Tasten A,B, Rechts,Links, Oben, Unten,Start und Select A und B sind auf der Tastatur Y und X. Start liegt auf Escape und Select auf Enter Output geht über ein dreidimensionales Array. Dieser muss Layer für Layer mit einem Image bestückt werden und kann dann mit einem Index versehen werden (Tilemap). Die Sprache geht etwas ins Esoterische. An dem BCC nahm ich nicht teil, da der Code 90% öffentlich aus dem Codearchiv kommt. Deshalb ein dank an hectic und noobody. von hectic ist die Image-Breite-Auslese-Funktion und von noobody die komplette Stringrechnerei. ich hab nur noch eine Funktion geschrieben, die die passenden variablen immer in den Term einsetzt. Ich hab 2 Beispielprogramme mitgegeben. Habe im Moment keine Zeit ausführlich die Sprache zu erklären Dokumentation folgt also noch. Alles in allem zum Download hier. --- So, nun mal zur Bedienung: Das Prog öffnet die Datei, die es aus der Commandline erhält. Das heißt, man muss die Scriptdateien mit main.exe öffnen oder zumindest auf die main.exe ziehen. Versucht man sie so zu öffnen ist keine Datei angegeben und es erscheint ein MAV. Die Scripts selbst sind ini Dateien. Es gibt einige vordefinierte Blöcke und Variablen, eigene Blöcke und Variablen kann man natürlich einfügen. Der ini-Reader ist ausnahmsweise von mir... Der hier im Forum war mir zu "live", nun der Termrechner von noobody alles vorberechnen. Vordefinierte Blöcke: Code: [AUSKLAPPEN] [Game] - Hier fängt der Script an. Nach dem Block werden die Arrays und das Fenster angepast.
[Layer X] - Die Variable "l" wird auf X gesetzt und dann der Block ausgeführt. Es wird für jeden Layer ein Block erwartet. [KEY_A] - Wird nach einem Rendern in die Warteschlange gestellt wenn A gedrückt wurde [KEY_B] - " [KEY_Right] - " [KEY_Left] - " [KEY_Up] - " [KEY_Down] - " [KEY_Select] - " [KEY_Start] - " Vordefinierte Variablen: Code: [AUSKLAPPEN] Write -Only:
tile_size=Ausdruck - Legt die Zellengröße der Quadratischen Zellen in der Image fest width=Ausdruck - Breite des Fensters (in Tiles) height=Ausdruck - Breite des Fensters (in Tiles) layers=Ausdruck - Anzahl der Layer offset=Ausdruck - Offset für den aktuellen Layer call=Block - Führt einen Block direkt aus. next=Block - Stellt einen Block in die Warteschlange nextframe=Block - Stellt einen Block in die Warteschlange und Rendert nach dessen Ausführung. image=String - Legt die Layerimage für den Layer "l" fest title=String - Setzt den Titel des Fensters tile=Ausdruck - Setzt den Index des Feldes "x,y,l" Read and Write x=Ausdruck y=Ausdruck l=Ausdruck Wie man erkannt hat gibt es 3 Verschiedene Datentypen: "String" "Ausdruck" und "Block" Bei String wird der Wert der Variable komplett ohne Verarbeitung übernommen Bei Ausdruck wird der String als Gleichung ausgewertet. Ein Block kann aus der Definition eines Blocks kein ] enthalten. Nutzt man next=Bla[var], wird der Wert der variable Var ausgelesen und zu dem entsprechenden Block gesprungen. Ein If, Select Case, Repeat until, ist deshalb möglich. Code: [AUSKLAPPEN] [TestX=Y]
tmp=(x=y) Call=Equal[tmp] [Equal1] xisy=true [Equal0] xisy=false [Repeat0] exit=Bedingung next=Repeat[exit] [Repeat1] Ich glaube sogar meine Sprache ist Turring vollständig. Das Programm ist dann beendet, wenn kein Block mehr in der Warteschlange steht. Der Debugger ist das gleiche Programm nur dass nach jedem Schritt ein Waitkey folgt. Außerdem hat man die Warteschlange, x,y,l und das Aktuelle Tile im Blick. Die Titelzeile gibt Aufschluss wo man sich befindet und was die Ausdrücke für Ergebnisse hatten. --- [KNOWN BUGS] Unter XP funktionieren nur vollständige Pfade in den Scripts.... Ich bitte XP Nutzer deshalb diese anzupassen: [Layer 0] image=hw.png --> image=C:\.....\hw.png [BUGFIXES] Nun kann man auch 2 Dimensionale Bilder als Tileset nutzen. Kein MAV mehr sondern eine Fehlermeldung wenn man das Programm ohne Datei startet. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
V1.1 Bugfixes bei Klammern mit Variablen (Hatte Noobodys TERM_END falsch interpretiert) Tasten sprechen jetzt langsamer an. Das Bild Zeigt ein Beispiel das hinzugefügt wurde. Hier kann man Pokemon-Artig seinen Namen eingeben und mit START bewundern, dass Blockscript ohne Strings und Array und Banks und nur mit Integern den Namen gespeichert hat. Die Schriftart stammt von hectics Draw3D Die Movement-Demo war zwar schonmal dabei aber hier nochmal ein Bild. Sie Zeigt, wie man zum Beispiel einen Spieler bewegen kann. Ist aber jetzt auch angenehmer zu bedienen, weil die tasten langsamer ansprechen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group