Block Script

Übersicht Sonstiges Projekte

Neue Antwort erstellen

Silver_Knee

Betreff: Block Script

BeitragDi, Aug 18, 2009 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image
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

BeitragDi, Aug 18, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image

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

user posted image

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.

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group