Autor Thema: Funktionspointer oder ähnliches  (Gelesen 11885 mal)

schwarz

  • Tentakelschleim
  • *
  • Beiträge: 3
    • Profil anzeigen
Funktionspointer oder ähnliches
« am: 21. Mai 2017, 01:03:49 »
Hallo,

sehe ich das richtig, dass es bei AGS keine Funktionspointer gibt?
Kann man so etwas ähnliches machen? Ungefähr so:
//myScript.ash:
struct RoomStruct {
  int RoomNumber;
  import function RoomFunction(int Test);
};

//room1.asc
RoomStruct myRoomStruct[2];
int RoomStruct::RoomFunction(int Test) {
  return (Test * 2);
};

//room2.asc
RoomStruct myRoomStruct[3];
int RoomStruct::RoomFunction(int Test) {
  return (Test / 5);
};
Damit könnte jeder Raum seine eigene Funktion haben und trotzdem wäre sie im Struct schön angeordnet.
Danke schon mal für die Hilfe, und vor allem auch für die vielen Episoden, macht immer wieder Spaß mmm zu spielen.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Funktionspointer oder ähnliches
« Antwort #1 am: 22. Mai 2017, 13:17:41 »
Zitat
sehe ich das richtig, dass es bei AGS keine Funktionspointer gibt?
Leider ja. In AGS kann man keine Pointer auf Basistypen setzen. Oder auf selbstdefinitierte Typen.


Folge mir auf X und itch.io

schwarz

  • Tentakelschleim
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Funktionspointer oder ähnliches
« Antwort #2 am: 24. Mai 2017, 23:02:43 »
Schade eigentlich. Geht sowas, wie ich schon geschrieben habe?

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Funktionspointer oder ähnliches
« Antwort #3 am: 25. Mai 2017, 00:07:23 »
Ich wüsste nicht nie.


Folge mir auf X und itch.io

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 719
    • Profil anzeigen
Re: Funktionspointer oder ähnliches
« Antwort #4 am: 27. Mai 2017, 11:28:12 »
Tjoa, AGS-Script ist leider keine wirklich schöne Sprache. Wenn man richtige Programmiersprachen gewöhnt ist, wundert man sich da schon an jeder Ecke. Immerhin sind mit Version 3.4. auch mal For-Schleifen und Switch-Case-Abfragen möglich.  ;D

Könnt ihr mir als eher Java-affinen Entwickler einmal kurz erläutern, was genau ein Funktionspointer ist? Für mich klingt es so als würdet ihr das implementieren wollen, was man in Java ein Interface nennt.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Funktionspointer oder ähnliches
« Antwort #5 am: 28. Mai 2017, 21:28:13 »
Ein Pointer ist eine Variable, deren Inhalt aber eine Speicheradresse ist. Sie zeigt also auf etwas. Hence the name. Damit kann man mehrere Bezeichner auf die gleiche Variable, oder wahrscheinlicher, das gleiche Objekt setzen.


Folge mir auf X und itch.io

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 719
    • Profil anzeigen
Re: Funktionspointer oder ähnliches
« Antwort #6 am: 29. Mai 2017, 14:25:13 »
Das ist schon klar, hat aber nichts mit seiner gewünschten Implementierung zu tun...
Für mich sieht es so aus, als dass er das struct dazu verwenden möchte, eine Grunddefinition für die Raum-Funktionen zu erstellen. Und das wäre wie ein Interface.

schwarz

  • Tentakelschleim
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: Funktionspointer oder ähnliches
« Antwort #7 am: 29. Mai 2017, 21:26:04 »
Tjoa, AGS-Script ist leider keine wirklich schöne Sprache. Wenn man richtige Programmiersprachen gewöhnt ist, wundert man sich da schon an jeder Ecke. Immerhin sind mit Version 3.4. auch mal For-Schleifen und Switch-Case-Abfragen möglich.  ;D
Dann ist es ja gut, dass ich mich jetzt erst einarbeite. Habe mich schon etwas über die vielen if-Abfragen gewundert.
Könnt ihr mir als eher Java-affinen Entwickler einmal kurz erläutern, was genau ein Funktionspointer ist? Für mich klingt es so als würdet ihr das implementieren wollen, was man in Java ein Interface nennt.
Ich weiß jetzt nicht genau, was ein Interface ist, aber wenn es wie bei C# ist, dann ist es vermutlich fast das selbe. Bei einem Funktionspointer kann ich von außen einfach sagen, rufe die Funktion an dieser Adresse auf. Bis auf den Aufbau des Funktionsaufruf (z.B. int Test(bool Check, int Number)) kann die Funktion alles mögliche enthalten. D.h. in einem Raum wird z.B. das Licht eingeschaltet, in einem anderen das Fenster geöffnet. Von außen (Global Script) ist nicht ersichtlich, was passiert, also eine saubere Kapselung. Bin mir jetzt aber nicht mehr sicher, ob das wirklich weiter helfen würde, da bei einem Spiel doch relativ viel raumunabhängig ist.

Ist eigentlich das Türenskript in Bernard Starterpack AGS 3.21 das aktuelle? Bin da gerade etwas am rumbasteln und möchte auf der aktuellen Basis aufbauen.

Cone Arex

  • Mod
  • alter Tentakel
  • **
  • Beiträge: 2302
  • Geschlecht: Männlich
  • Skandal-Entwickler und Idiot
    • Profil anzeigen
    • Conequest
Re: Funktionspointer oder ähnliches
« Antwort #8 am: 29. Mai 2017, 21:50:27 »
Ein Interface ist eine Art Klasse, die nur Methodendefinitionen enthält aber keine -implentationen. Auch können keine Objekte davon erzeugt werden. Es dient nur dazu, dass andere Klassen davon ableiten können. Kurzgefasst: Eine Krücke für Java, weil der Kram keine Mehrfachvererbung kennt. (May I ask why?) Hoffentlich habe ich das jetzt nicht mit den Abstrakten Klassen verwechselt. Mein Java ist etwas eingerostet.

Das Türensystem im Bernard-SP müsste das Aktuelle sein.  Gibt es ein Doors-Skript? Wenn ja, ist es das Neue.
Aktuell ist übrigens die Version für 3.4. Die hat auf alle Fälle das neue Türensystem integriert.
« Letzte Änderung: 29. Mai 2017, 21:52:46 von Cone Arex »


Folge mir auf X und itch.io

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 719
    • Profil anzeigen
Re: Funktionspointer oder ähnliches
« Antwort #9 am: 30. Mai 2017, 17:48:45 »
Tjoa, AGS-Script ist leider keine wirklich schöne Sprache. Wenn man richtige Programmiersprachen gewöhnt ist, wundert man sich da schon an jeder Ecke. Immerhin sind mit Version 3.4. auch mal For-Schleifen und Switch-Case-Abfragen möglich.  ;D
Dann ist es ja gut, dass ich mich jetzt erst einarbeite. Habe mich schon etwas über die vielen if-Abfragen gewundert.

Jetzt wo du es sagst fällt es mir tatsächlich zum ersten mal auf.
Die Abfrage der UsedActions würde in einer switch-case-Abfrage deutlich eleganter aussehen.
Das sollen wir uns mal für ein Refactoring vormerken.


Interface sollte in Java eigentlich das gleiche wie in C# sein. Deine Beschreibung, Cone, ist da schon richtig. Aber wozu sollte man eine Mehrfachvererbung brauchen?  :P