Terraformer Coredumb[Scriptsprache]

Der kleine Teladi aus dem X-Universum hat Gesellschaft bekommen - hier dreht sich jetzt auch alles um das, was die kreativen Köpfe unserer Community geschaffen haben.

Moderators: HelgeK, TheElf, Moderatoren für Deutsches X-Forum

User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Terraformer Coredumb[Scriptsprache]

Post by Westbeam »

Hey Leutz, ich wollt euch mal meine Scriptsprache vorstellen.
Das sind die Befehle(Die Variablen in den Klammern stehen für bestimmte Werte,'0f' als Wert heißt soviel wie garnix): :

-mode[rm] = Startet den Script('rm' steht für Realmode)
-var[%i]='Variablenname' = Legt eine Integervariable fest(%=Integerzeichen,i=Integer)
-var[#f]='Variablenname' = Legt eine Floatvariable fest(#=Floatzeichen,f=Float)
-var[$s]='Variablenname' = Legt einen String fest($=Stringzeichen,s=String)
-gra[0f]<Höhe,Breite,Fartiefe,Modus> = Erstellt ein Grafikfenster mit den angegebenen Werten.
-buffer[bb] = Setzt den Backbuffer(bb=Backbuffer)
-buffer[fb] = Setzt den Frontbuffer(fb=Frontbuffer)
-flip[0f] = Genau wie 'Flip'
-print[0f]<Text> = Schreibt einen Text
-print[ct] = Schreibt die aktuele Zeit auf den Bildschirm(ct=Currenttime)
-print[cd] = Schreibt das aktuele Datum auf den Bildschirm(cd=Currentdate)
-wait[t]<Zeit> = Wartet solange, bis die Variable Zeit abgelaufen ist(Funktioniert wie 'Delay')
-wait[k] = Wartet auf Tasteneingabe(k=Key)
-wait[m] = Wartet auf Mausdruck(m=mouse)
-cls[0f] = Löscht den Bildschirminhalt
-color[rgb]<rotwert,grünwert,blauwert> = Ändert die Farbe nach den RGB-Werten
-px[0f]<x,y> = Zeichnet einen Pixel an die Position x,y
-line[0f]<x1,y1,x2,y2> = Zeichnet eine Linie von x1,y1 zu x2,y2
-rect[0f]<x1,y1,x2,y2,modi> = Zeichnet ein Rechteck von x1,y1 zu x2,y2 mit dem modus 'modi'(0=leer,1=voll)
-endmode[rm] = Beendet den Script(rm=Realmode)

Dann gibt es noch '}' um eine Zeile frei zu lassen und ';' für Kommentare

Beispiel für ein Hello-World Programm:

Code: Select all

mode[rm]                 ;Realmode(startet den script)
gra[0f]<640,480,32,1>    ;Grafikfenster
buffer[fb]               ;Frontbuffer
}
}
print[0f]<Hello World!>  ;Text ausgeben
wait[k]                  ;Warten auf Tasteneingabe
endmode[rm]              ;Realmode beenden(beendet den script)
Jetzt fragt ihr euch wahrscheinlich warum diese komischen Klammern([ ]) da sind. Das kann ich erklären: Meine Scriptsprache baut auf der Spracher der Terraformer aus den X-Büchern auf. Dort werden diese Terraformer auch Xenon gennant. Und da haben alle Befehle diese Klammern wo etwas drin steht. Die Sprache taucht in dem Buch 'X-Farnhams Legende' auf Seite 154 auf, wo diese Sprache als Terrafromercoredump(TCD) bezeichnet wird, deswegen heißt meine Scriptsprache jetzt auch so :D

Und: Donwload
Hinweis: Beim starten des Interpreters den Namen mit Dateiendung angeben, etwa so: helloworld.txt
Es sind 2 Beispiele dabei: Hello World-Programm, welches genügend kommentiert ist und ein Grafiktest, der überhaupt nicht kommentiert ist, viel spaß damit :D

Ich habe die Scriptsprache für den BCC #28(BlitzCodeCombo) gemacht. Geschrieben ist es also mit BlitzBasic(Link zum Blitzforumthread)

Update:
Rechnen ist nun ebenfalls möglich, und zwar so:

Code: Select all

print[add]<9,1,8,8>
Das rechnet die Zahlen 9,1,8,8 zusammen, 'add' steht dabei für 'Addition'(Plusrechnen).
Dann gibts noch das:
-print[sub]<Zahl1,Zahl2...> = Subtraktion
-print[mul]<Zahl1,Zahl2...> = Multiplikation
-print[div]<Zahl1,Zahl2...> = Division
Kommt in der nächsten downloadbaren Version drin vor, wo ich dann hoffentlich auch Schleifen einbauen werde :roll:

ys, aletes :D
Last edited by Westbeam on Tue, 21. Jul 09, 19:34, edited 2 times in total.
Glumski
Posts: 1586
Joined: Tue, 8. Apr 08, 15:53
x3tc

Post by Glumski »

Das ist ja alles ganz gut, aber wozu ist das gut? Nicht, dass ich deine Arbeit nicht zu schätzen wüsste, aber was bringt das?

Ich kenn mich da nicht so aus. Ach ja, schreib in den Titel am besten noch [Programmiersprache].

Grüße
Glumski
User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Post by Westbeam »

wohl eher 'Scriptsprache', da es ja ohne mein Programm nicht läuft.
Naja, man kann damit halt Programme schreiben mit den Terraformerbefehlen(oder mit so ähnlichen).

Ich nehme mit dieser Scriptsprache am BCC(BlitzCodeCombo) teil, und dort sollte man ja diesmal eine Scriptsprache erstellen.

Und da die Scrptsprache ja auch mit dem X-Universum zu tun hat, poste ich sie eben hier :D
-=FL=- UniversE
Posts: 1198
Joined: Sat, 31. Dec 05, 13:36
x4

Post by -=FL=- UniversE »

Dafür, dass du solch eine simple Programmiersprache benutzt, ist das Exception-Handling aber ganz schön mager, wenn es denn überhaupt vorhanden ist (hab nicht alles bis jetzt probiert).

Was ich so getestet habe:

- Falschen Pfad zur Scriptdatei angeben (memory access violation nicht abgefangen - oder ist das etwa dein handling?^^)
- Falsche Befehle eingegeben (das Programm schmiert einfach ab, statt einem Auskunft über den Ort des Fehlers zu geben)

Was alles falsch war:

- in deiner Helloworld.txt machst du den Frontbuffer an, im Kommentar steht aber Backbuffer
- der Backbuffer funktioniert nicht mit Text (aber das liegt an BlitzBasic und nicht an dir)


Was noch so nicht funktioniert, aber auf jeden Fall rein muss:

- Starten über Kommandozeilenparameter
- Und vergiss nicht für [div] ein Exception Handling für Division durch 0 reinzubauen, wenn du's nicht schon getan hast und NumberFormatExceptions ordentlich abzufangen


Viel Erfolg,
UniversE
User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Post by Westbeam »

kommt ja alles noch rein, wie gesagt, ist ja bisher nur ein Anfang mit den allernötigsten Befehlen(mehr oder weniger).

Das mit dem Backbuffer hab ich auch gesehen, das liegt daran, dass ich dort erst den Backbuffer gesetzt hab (buffer[bb]), dann den Kommentar gesetzt hab und mich dann aber doch für den Frontbuffer entschieden hab und dann vergessen den Kommentar zu ändern :roll:
-=FL=- UniversE
Posts: 1198
Joined: Sat, 31. Dec 05, 13:36
x4

Post by -=FL=- UniversE »

Ja - ist nur wie gesagt beides nicht angebracht, da die Screenbuffer sich nicht für die mit den "print" Befehlen generierten Text interessieren. Du kannst ja mal ausprobieren:

mode[rm]
buffer[bb]
print[0f]<Hallo!>
wait[k]
flip[0f]
wait[k]
endmode[rm]

Du wirst schon vor dem ersten Tastendruck Text sehen.

Drüber hinaus würde ich es tatächlich Programmiersprache nennen und nicht Script-Sprache.

Ob's interpretiert wird oder nicht, ist völlig egal. PHP wird auch nur interpretiert. Aber eine Script-Sprache zeichnet sich dadurch aus, dass sie von anderen Programme eingebunden wird.

JavaScript in Browsern
Python in Blender (und vielen anderen Programmen)
MSCI in X3

usw.

Mal ganz abgesehen davon, dass ich diesen Wettbewerb, wer am aller besten BlitzBasic-Befehle umdichten kann, ziemlich merkwürdig finde, nur weiter so und viel Spaß bei der Arbeit^^
User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Post by Westbeam »

Du wirst schon vor dem ersten Tastendruck Text sehen.
Logisch, soll es ja auch,da du ja auch keinen 'Wait' Befehl davor gesetzt hast.

Naja , BlitzBasic-Befehle umdichten ist da aber auch wieder was anderes. Der Befehl 'mode' und 'endmode' sind nicht in BlitzBasic-Befehle um zu funktionieren :wink:

Naja, alzu viel werde ich eh nicht mehr ändern. Schleifen kommen noch rein und einige Bugs noch beheben. Merh dann auch nicht mehr, da ich mich im Moment eher auf NASM und OS-Programmierung konzentriere :D
-=FL=- UniversE
Posts: 1198
Joined: Sat, 31. Dec 05, 13:36
x4

Post by -=FL=- UniversE »

aletes wrote:
Du wirst schon vor dem ersten Tastendruck Text sehen.
Logisch, soll es ja auch,da du ja auch keinen 'Wait' Befehl davor gesetzt hast.
So logisch ist das nicht, wenn man das mit dem Backbuffer und dem Frontbuffer verstanden hat - und warum zwischen den beiden waits so ein mysteriöses flip[0f] steht :roll: ;)

Aber das ist wohl ne BlitzBasic-Macke, dass er die print-Ausgabe immer in den Frontbuffer feuert, egal was man gesetzt hat.
User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Post by Westbeam »

Öhm, nein?!
BlitzBasic:

Code: Select all

SetBuffer BackBuffer()
Print "Hello World"
WaitKey
End
Der Text wird trotzdem ausgegeben :wink:

Stimmt , warum steht da eigentlich ein flip[0f], dass brauch da gar nicht stehen, denn der Befehl flip[0f] tauscht ja nur die Bufferinhalte miteinander aus :?
-=FL=- UniversE
Posts: 1198
Joined: Sat, 31. Dec 05, 13:36
x4

Post by -=FL=- UniversE »

Wie gesagt: es ist einfach Schwachsinn und eine Macke von BlitzBasic. Da kannst du nix für.

Warum sollte Text bitte nicht von den Buffern berücksichtig werden? Dafür gibt es keine logische Erklärung. Wenn ich Text in den Backbuffer schreibe - was ja offenbar mit print nicht geht - warum auch immer - dann will ich, dass der Text auch erst dann angezeigt wird, wenn ich den BackBuffer nach vorne ziehe.

So wie der Code da steht, erwarte ich eigentlich, dass "Hello World" auch im BackBuffer landet. Tut es aber aus unerfindlichen Gründen nicht :D

Von daher hast du dich schon richtig entschieden, von dieser Sprache los zu kommen und was anderes jetzt zu proggen :mrgreen:
User avatar
Westbeam
Posts: 685
Joined: Fri, 28. Mar 08, 15:23
x3tc

Post by Westbeam »

Heey, immerhin ist mein X-Fangame "X-the forgotten battle" auch in BlitzBasic geschrieben. BlitzBasic ist halt sehr gut zum Spiele Programmieren geeignet :wink: Und ich werde auch solange damit Programmieren, bis BlitzMax(Plattformunabhängig) endlich genug 3D-Funktionen bietet :P

Bis dahin werde ich weiter alle meine Programme in BlitzBasic schreiben, und lernen tu ich weiterhin NASM. Damit ich bald ein vernünftiges textbasiertes OS hab :D

Return to “Kreative Zone”