Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
19.11.2002, 13:49
the_viking



Ich hatte eine Idee: Programmiere doch deine eigene Scriptsprache im C-Style!

Aber praktisch siehts echt düster aus: Kaum einen Ansatz, der Funktioniert, habe ich hinbekommen!
Hat schon jemand Erfahrungen damit gemacht?
Vielleicht schon eine selbst programmiert?
Kennt jemand gute Tutorials? ( Da hab ich kaum was drüber gegoogled )

Irgendwie haben die ja auch Unreal Script oder PHP oder Perl hinbekommen. Also muss es ja irgendwie gehen! Helft mir! Thx im Voraus für die antworten von Prefect & Co. !

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
001
19.11.2002, 13:58
Hanfling



ich glaub im allgemeinem coding board war mal vor nem halben jahr oder so nen thread zu dem thema....

--

Nun ist deine Zeit gekommen sprach der Tod, stolperte und brach sich das Genick. :o

zum Seitenanfang zum Seitenende Profil || Suche
002
19.11.2002, 14:01
Sccar



schau dir mal diesen artikel an. der erscheint mir ganz gut als einführung in die grundlegende technik. hab mich auch mal nen bischen damit beschäftigt und es letzendlich aufgegeben, war irgendwie viel zu komplex. wenn du irgendwie fragen hast oder einfach jemanden zum reden suchst ;-) kannste ja mal icqen.

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}


Dieser Beitrag wurde am 19.11.2002 um 14:02 von Sccar bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
19.11.2002, 15:11
Archangel



Ich glaub sogar am ende von dem Buch "C Entpackt" is der quellcode von so nem C-style scriptparser

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
004
19.11.2002, 15:33
apfelkorn



Also als Hilfe:
Du musst dir diesen Artikel 10 mal hoch und runter durchlesen, und dann die manpages zu flex und yacc/bison ( siehe gnu.org ) Dann wirst du verstehen, was denn so ein parser mit yacc und der lexxer macht, dann ist es nur noch eine frage der ausdauer...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
20.11.2002, 20:46
Diablo_bth



aja da gabs auch mal ne tutorial Serie über Script-Compilerbau auf http://www.flipcode.com/

--

zum Seitenanfang zum Seitenende Profil || Suche
006
21.11.2002, 14:47
[RMen]OneStone



Das schwierige ist IMO der Compiler, der Interpreter ist oft nicht so schwer. Einen Interpreter hab ich acuh schonmal gemacht, hat nur so eine Woche bis zur Grundrechnung und einfachen Ausgabe gedauert, aber da ich keinen Compiler hatte, war es nervig den Code mitm Hex zu schreiben... =)

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
007
21.11.2002, 16:50
the_viking



@Diablo: Jo, das File hab ich mir mal durchgelesen, aber nichs so richtig verstanden ( Wieso müssen die das auch immer in Englisch schreiben? )

What means you have to code the script with a hex-editor? That must be a really annoying sort of developing scripts (at all if you just want to test a new feature)

English grammar ist horrible. French grammer is most horrible.

\E: I've downloaded the tut zips, and it is really nice, but I don't understand anything of the code bison has written :(

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446


Dieser Beitrag wurde am 21.11.2002 um 17:15 von the_viking bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
21.11.2002, 17:22
[RMen]OneStone



Najar, ich hatte nie bock nen eigenen Compiler zu schreiben, der mir ein binary interpretable file schreibt, deshalb hab ich einfach mit einem Hex-Editor meine eigenen Mnomics in das file geschrieben...

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
009
22.11.2002, 12:05
King of Darkness



bahhh zu viel text

also ich habe mal sowas in der art gemacht und zwar war das ein textadventure wo die texte dynamisch geändert wurden

unterstützt wurde dann ein zeilenumbruch einteilung nach bereichen und das enden von bereichen ... war nicht so sehr schwer
wenn ich es mal auf der platte finde kann ich es dir zur verfügung stellen
ich kanns dann vieleicht mal hier posten ... is nich viel code(glaube ich höchstens 500 zeilen)

--

Coding Center --- Tutorials über Programmierung und andere Themen
Amazon Preisbeobachung mit Preisalarm

zum Seitenanfang zum Seitenende Profil || Suche
010
25.11.2002, 15:55
Exec



yo,lads doch mal hoch :)

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
011
26.11.2002, 11:42
King of Darkness



ok ähhhm morgen ;) aber nur den quellcode und die textdatei bzw den syntax
damit kann man dann mal ein adventure machen ( 100 % text versteht sich ja von selbst ;) )

--

Coding Center --- Tutorials über Programmierung und andere Themen
Amazon Preisbeobachung mit Preisalarm

zum Seitenanfang zum Seitenende Profil || Suche
012
26.11.2002, 13:36
the_viking



@King:

Jo, sowas hatte ich auch mal, aber da konnte man dann keine Variablen einsetzen, sondern nur feste parameter:

Quellcode:
DoSomethin(); DoElse(2);
PrintString("Hello");

wurde dann zu sowas:

Quellcode:
DoSomethin
DoElse 2
PrintString "Hello"

und das wird dann von oben nach unten abgearbeitet ...

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
013
27.11.2002, 11:16
King of Darkness



naja meins ist noch billiger,
ersteinmal der komplette code:
//textadventure
//beispiel

// version 1.06
// by King of Darkness

// 27. November 2001

//Biblioteken
#include<iostream> // verwendung der iostream.h
#include<string>
#include<fstream>
using namespace std; // std namespace verwenden

//Konstanten
const string text_datei="text.txt";
const string new_line="endl";
const string ende_absatz="-ende-";

// globale variablen
string storypunkt;

////////////////////////////////Klassen/////////////////////////////////////////////////
class Spieler
{
public:
string name;
string punkt;
ifstream lade;
ofstream save;

void save_spielstand()
{
save.open(name.c_str(), ios_base::out);
save << punkt;
save.close();

}

void lade_spielstand()
{
lade.open(name.c_str(), ios_base::out);
if(!lade)
{
cout << "spieler existiert net" << endl;
}
else
{
lade >> punkt;
lade.close();
}
}

} player;

/////////////////////////////////Neben-Funktion///////////////////////////////////////////

bool Datei_lese(string storypunkt)
{
string datei_lese;
ifstream text_ein;

text_ein.open(text_datei.c_str(), ios_base::out);
if(!text_ein)
{
cout << "Textdatei existiert nicht !" << endl;
text_ein.close();
return false;
}

else
{

for(;datei_lese != storypunkt;)
{
text_ein >> datei_lese;
if(datei_lese =="-=ENDE=-")
{
return false;
}
}



for(;datei_lese!="-ende-";)
{
text_ein >> datei_lese;

if(datei_lese == new_line || datei_lese == ende_absatz)
{
cout << endl;
}
else
{
cout << datei_lese << " ";
}

}

cout << endl;
text_ein.close();
return true;
}

}

bool Eingabe_pruef(string auswahl)
{
if( auswahl!="a" && auswahl!="b" && auswahl!="c")
{
cout << "Falsche Eingabe" << endl;
return false;
}
else
{
return true;
}
}

string Temp_schreib_les(string auswahl)
{
storypunkt=storypunkt + auswahl;
return storypunkt;
}

/////////////////////////////////////Hauptfunktion////////////////////////////////////////
int main() // kann auch void main() heissen
{


bool schleiffe, abfrage, dat_les_abf, spiel;
string story_punkt, SPIEL_ABFRAGE;
char hauptmenue_eingabe;

cout << "Hallo zu diesem Spiel" << endl << endl; // ausgabe des menues
for(schleiffe = true;schleiffe == true;)
{
cout << "Starten <1>" << endl;
cout << "Beenden <0>" << endl;
cin >> hauptmenue_eingabe; // benutzereingabe abwarten


switch(hauptmenue_eingabe) // eingaben auswerten
{

case 49: // eingabe "Starten <1>" wurde gewählt
{
story_punkt="START_SPIEL";
storypunkt="SPIEL_";
spiel=true;
for(;spiel==true;)
{

dat_les_abf=Datei_lese(story_punkt);
if(dat_les_abf==true)
{
cin >> SPIEL_ABFRAGE;

for(abfrage = false;abfrage==false;)
{
abfrage=Eingabe_pruef(SPIEL_ABFRAGE);
if(abfrage==false)
{
cin >> SPIEL_ABFRAGE;
}
}
story_punkt=Temp_schreib_les(SPIEL_ABFRAGE);

}
else
{
cout << "Sie haben das spiel geschafft" << endl;
spiel=false;
}
}

continue;
break;
}

case 48: // eingabe " Beenden <0>" wurde gewählt
{
schleiffe = false;
continue;
break;
}
default: // faslche eingabe
{
cout << "falsche eingabe" << endl;
continue;
break;
}
} // ende der switch anweisung
} // ende for-schleiffe
return 0; // wenn oben void main() fällt das hier weg
} // ende des progs
-----------------------------------------------------------
und hier die textdatei:
Angaben zur Datei:

an das ende der zeile wird ein endl gesetzt bsp.

text endl

bei neuen zeilen ebenfals bsp.

text endl
endl // das meine ich so das eine zeile frei gelassen wird
text ...

wenn ende von einem absatz gekennszeichnet wird macht man das so -ende- bsp

text endl
...
-ende-

der anfang eines teils ergibt sich aus "SPIEL_" und den vorher gewählten moeglichkeiten(a, b, c)
bsp.

SPIEL_acbac // vorherrige gewählte option: a, c, b, a, c

text endl
endl
text...
-ende-

/////////////////////////////////////////////////////////////////////////////////////////////////////

START_SPIEL

du wurdest von deiner... endl
endl
a) du gehst unter... endl
b) gfdgfdf... endl
c) gnaaa.. endl

-ende-
/////////////////////////////////////////

SPIEL_a

text a1 endl
endl
a) endl
b) endl
c) endl

-ende-

SPIEL_aa

text aa1 endl
endl
a) endl
b) endl
c) endl

-ende-

SPIEL_ab

text ab1 endl
endl
a) endl
b) endl
c) endl

-ende-

SPIEL_ac

text ac endl
endl
a) endl
b) endl
c) endl

-ende-

////////////////////////////////////////////
SPIEL_b

text b1 endl
endl
a) endl
b) endl
c) endl

-ende-

////////////////////////////////////////////
SPIEL_c

text c1 endl
endl
a) endl
b) endl
c) endl

-ende-

////////////////////////////////////////////

-=ENDE=-

-----------------------------
das -=ENDE=- gehört zur textdatei

bevor ihr rumlästert schaut bitte aufs datum(ganz oben)

hab sommer 2001 erst mit c++ angefangen.

--

Coding Center --- Tutorials über Programmierung und andere Themen
Amazon Preisbeobachung mit Preisalarm

zum Seitenanfang zum Seitenende Profil || Suche
014
29.11.2002, 20:55
theDon



nur ein kleiner tipp: Kommentare sollen den Code erklären, nicht wiederholen...

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
015
02.12.2002, 08:23
King of Darkness



ja das war in meinen anfanges-coding wochen jetz komentier ich sinnvoll ;)

--

Coding Center --- Tutorials über Programmierung und andere Themen
Amazon Preisbeobachung mit Preisalarm

zum Seitenanfang zum Seitenende Profil || Suche