Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

11

23.01.2008, 08:25

Hallo,.
wäre toll, wenn du die Codes später für alle zur Verfügung stellen könntest ;)
Ist aber deine Sache :o)

Ansonsten wäre es mal interessant zu sehen, ob man deine Skriptsprache schon in einem Spiel einbinden könnte und das ohne großen Aufwand ;)

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Phili

unregistriert

12

26.01.2008, 16:42

Zitat

Ansonsten wäre es mal interessant zu sehen, ob man deine Skriptsprache schon in einem Spiel einbinden könnte und das ohne großen Aufwand

Ein echtes Spiel, in das ich die Skriptsprache integrieren kann hab ich leiter gerade nich parat.
Ich poste hier aber mal ein minimalistisches Programm, das eine Beliebige Scriptdatei in der Konsole ausführt, um zu demonstrieren, wie einfach die Benutzung ist.
Ich werde auch demnächst mal eine dll draus machen damit ihr euch das ganze mal näher angucken könnt.


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "PHS.h"                    //Includedatei für PHScript

#include <iostream>


//Das Script soll über die Konsole Zahlen Ein- und Ausgeben können.

//Dafür werden zwei Funktionen bereitgestellt.


//Die Funktionen erhalten jeweils als ersten Parameter eine Struktur

//namens PHSParameter. In ihr liegen als double-Werte die eigentlichen

//Parameter der Funktion.

//Der zweite Parameter ist ein Pointer, der auf Daten des Hauptprogramms zeigt,

//die dadurch durch das Script manipuliert werden können.

//Der dritte Parameter ist der "Arbeitsspeicher" des Programms

void Eingabe(PHSParameter *Params, char *Pointer, double *Memory)
{
    std::cin>>Memory[(int)Params->Param[0]];    //Der erste Parameter ist die Adresse

                                                //der Variablen, die eingelesen werden soll.

                                                //Weil alle Parameter als double vorliegen

                                                //casten wir zu int und lesen mit std::cin

                                                //eine Zahl in Memory an die entsprechende Adresse.

}
void Ausgabe(PHSParameter *Params, char *Pointer, double *Memory)
{
    std::cout<<Params->Param[0]<<std::endl;     //Der Parameter wird ausgegeben.

}

int main()
{
    PHSFunctions Functions;                     //Befehle, über die das Script verfügt

    PHSGetFunctions(&Functions);                //Standartbefehle einlesen(z.B. Addition,

                                                //Subtraktion, Kosinus, Sinus, new, free)

    PHSAddFunction(&Functions, "get", Eingabe); //Eingabe und Ausgabe unter den Namen

                                                //"get" und "print" eintragen

    PHSAddFunction(&Functions, "print", Ausgabe);

    char filename[100];
    std::cout<<"Bitte geben sie die Scriptdatei an"<<std::endl;
    std::cin>>filename;

    PHSProgram Program;                         //Das Script

    PHSCompile(filename, &Program);             //Laden des Scripts

    char *Bytecode;                             //Repräsentiert das Fertige Scriptprogramm

    PHSAssemble(&Program, &Bytecode, &Functions);
    PHSExecute(Bytecode, &Functions, PHSPARSE_ALL, NULL);
    system("PAUSE");
    return 0;
}


Ein Script könnte dabei z.B. so aussehen(berechnet die Fakultät der eingegebenen Zahl):

Quellcode

1
2
3
4
5
6
7
8
9
function main(void)
  get(.a)
  b=1;
  i=1; while((i<a)|(i~a))
   b=b*i
   i=i+1
  end
  print(b)
return(0)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

26.01.2008, 17:06

Zitat von »"Phili"«

Ein echtes Spiel, in das ich die Skriptsprache integrieren kann hab ich leiter gerade nich parat.


Du hast doch dieses Panzerspiel geschrieben, wo man die Panzer mittels des Skriptes steuern kann. :roll:
Das wäre ja ein Einsatzgebiet vom Skripts...

Phili

unregistriert

14

26.01.2008, 17:33

@drakon
Aber das Spiel ist finde ich ein bisschen zu simpel um wirklich ernsthaft eine KI dafür zu programmieren.

Werbeanzeige