Suche Scripütsprachentutorial

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

DHE

Betreff: Suche Scripütsprachentutorial

BeitragDo, Okt 20, 2005 11:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
kennt jemand von euch ein Tutorial für eine Scriptsprache?
Also ich hab schn ne fertige Idee für die Sprache und hab auch schon ein Testscript geschrieben nur hab ich dann versucht die zu laden, und die Strings aufzudchneiden nur das hat alles net geklappt... Tuts hab ich bisher noch keine gefunden, also wenn jemand welche kennt wäre es nett wenn ihr die links posten könnten

Vielen Dank im Vorraus

DHE
Das Leben is scheiße die Grafik is geil

Keep on Rockin...

User posted image
 

BlitzBasic303

Betreff: RE:

BeitragDo, Okt 20, 2005 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Was meinst du mit Scriptsprache? Etwa in BB einen anderen Compiler zu schreiben?
 

David

BeitragDo, Okt 20, 2005 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Was willst du machen? Soll dein Programm das Script direkt interpretieren (like PHP) oder willst du Bytecode erzeugen (like Java)???

Wär schön, wenn du deine Idee ein bisschen genauer beschreiben könntest.

grüße

Eclipse

BeitragDo, Okt 20, 2005 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ob es ein tut gibt weiß ich net, aber ich versuch mal die funktion zu erklären.
(falls jemand es anders kennt: ich benutze die methode die auch bei der compiler-programmierung verwendet wird)

also erstmal wird natürlich der Text aus der datei geladen und in eine var (z.B: script_string$) gespeichert. Dann geht man diesen string mit HIlfe von z.B. Mid() Buchstabe für Buchstabe durch und trennt ihn in die einzelnen "Wörter" (tokens).
das geht in etwa so:

BlitzBasic: [AUSKLAPPEN]

For i = 1 To Len(script_string$)
If Mid(script_string$,i,1) = \" \" Then count_spaces = count_spaces + 1
Next

Dim token(count_spaces+1)

For x = 1 To Len(script_string$)
If Not Mid(script_string$,x,1) = \" \" Or Mid(script_string$,x,1) = Chr(13)
zwischen_token = zwischen_token + Mid(script_string$,x,1)
Else
token_counter = token_counter + 1
token(token_counter) = zwischen_token$
zwischen_token = \"\"
EndIf
Next



die methode kann man am besten so bildlich veraunschaulichen:
man hat eine pumpe, welche den string der in der datei steht veranschaulichen soll (script_stringt$), aus dieser pumpe verfrachtet man das Wasser (also die zeichen) in einen Eimer (zwischen_token). Sobald der Eimer voll ist, also ein Leerzeichen oder ein anderes Trennzeichen errreicht wird, wird der Inhalt sozusagen in das Becken nr.1 verfrachtet ( token(1) ). Der Zähler wird erhöht sodass man der Inhalt das nächste mal ins Becken nr.2 kommt ...
 

Florian

BeitragDo, Okt 20, 2005 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitz-pasting.net/u...rache.html

DHE

BeitragFr, Okt 21, 2005 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erst einmal für die viele Hilfe...

Ich will mit der scriptsprache eine Map erstellen.

Im Grunde genommen werden in dem Script nur Variablen definiert und ein zwei Befehle ausgeführt

Ein Beispiel:

Code: [AUSKLAPPEN]

%HMFILE "hm\hm2.bm" ; Heightmap laden
%PUTTREE 23,25 ;y koordinate wird mit TerrainHeight() definiert


Es sollen die Scriptbefehle (immer mit % eingeleitet) mit einer if-Abfage eingelesen werden. Dann soll z.B. bei %HMFILE eine Heightmap ("hm\hm2.bmp") geladen werden...
Das Leben is scheiße die Grafik is geil

Keep on Rockin...

User posted image
 

Florian

BeitragFr, Okt 21, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit den Funktionen kann Parameter auslesen. ( Nicht für If Abfragen )

ArgTest(Zeile$)
Wenn in der Zeile die Syntax eingehalten wurde, gibt die Function True zurück sonst False.

ArgC(Zeile$)
Gibt die Anzahl Parameter zurück.

ArgV$(Zeile$, arg)
Gibt ein Parameter zurück.

ArgTyp$(Zeile$, arg)
Gibt den Parameter Typ zurück
$ für String
Z kein String



BlitzBasic: [AUSKLAPPEN]


Function ArgTyp$(Zeile$,arg)
LenZeile=Len(Zeile$)
For X=1 To LenZeile
Select Mid$(Zeile$,X,1)
Case \" \"
ParameterAn=False
Case \";\"
If NeuerParameter=True Then
Return ;Erorr
End If

Return ;Argument nicht gefunden

Case \",\"
If NeuerParameter=True Then
Return ;Erorr
End If

If Index<2 Then
Return ;Erorr
End If

ParameterAn=False
NeuerParameter=True
Case Chr$(34);\"
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

index=index+1
NeuerParameter=False
If index=arg Then
Return \"$\"
Else
For X=X+1 To LenZeile
If Mid$(Zeile$,X,1)=Chr$(34) Then Exit
Next
End If
Default
If ParameterAn=False Then
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

ParameterAn=True
index=index+1
End If

If index=arg Then
Return \"Z\"
End If

End Select
Next
End Function

Function ArgV$(Zeile$,arg)
LenZeile=Len(Zeile$)
For X=1 To LenZeile
Select Mid$(Zeile$,X,1)
Case \" \"
ParameterAn=False
Case \";\"
If NeuerParameter=True Then
Return ;Erorr
End If

Return ;Argument nicht gefunden

Case \",\"
If NeuerParameter=True Then
Return ;Erorr
End If

If Index<2 Then
Return ;Erorr
End If

ParameterAn=False
NeuerParameter=True
Case Chr$(34);\"
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

index=index+1
NeuerParameter=False
If index=arg Then
For X=X+1 To LenZeile
If Mid$(Zeile$,X,1)=Chr$(34) Then
Exit
Else
Parameter$=Parameter$+ Mid$(Zeile$,X,1)
End If
Next
Return Parameter$
Else
For X=X+1 To LenZeile
If Mid$(Zeile$,X,1)=Chr$(34) Then Exit
Next
End If
Default
If ParameterAn=False Then
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

ParameterAn=True
index=index+1
End If

If index=arg Then
Parameter$=Parameter$+ Mid$(Zeile$,X,1)
End If

End Select
Next
Return Parameter$
End Function

Function ArgC(Zeile$)
LenZeile=Len(Zeile$)
For X=1 To LenZeile
Select Mid$(Zeile$,X,1)
Case \" \"
ParameterAn=False
Case \";\"
If NeuerParameter=True Then
Return ;Erorr
End If

Return Index
Case \",\"
If NeuerParameter=True Then
Return ;Erorr
End If

If Index<2 Then
Return ;Erorr
End If

ParameterAn=False
NeuerParameter=True
Case Chr$(34);\"
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

index=index+1
NeuerParameter=False
For X=X+1 To LenZeile
If Mid$(Zeile$,X,1)=Chr$(34) Then Exit
Next
Default
If ParameterAn=False Then
If Index=>2 And NeuerParameter=False Then
Return ;Error
End If
NeuerParameter=False

ParameterAn=True
index=index+1

End If
End Select
Next
Return Index
End Function

Function ArgTest(Zeile$)
LenZeile=Len(Zeile$)
For X=1 To LenZeile
Select Mid$(Zeile$,X,1)
Case \" \"
ParameterAn=False
Case \";\"
If NeuerParameter=True Then
Return False
End If

Return Index
Case \",\"
If NeuerParameter=True Then
Return False
End If

If Index<2 Then
Return False
End If

ParameterAn=False
NeuerParameter=True
Case Chr$(34);\"
If Index=>2 And NeuerParameter=False Then
Return False
End If
NeuerParameter=False

index=index+1
NeuerParameter=False
For X=X+1 To LenZeile
If Mid$(Zeile$,X,1)=Chr$(34) Then Exit
Next
Default
If ParameterAn=False Then
If Index=>2 And NeuerParameter=False Then
Return False
End If
NeuerParameter=False

ParameterAn=True
index=index+1

End If
End Select
Next

If NeuerParameter=True Then
Return False
Else
Return True
End If
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group