GLBasic Sonderrabatt im Bundle mit dem gp2x


GPHexor said:
<offtopic>
Ich frage mich eher, wie man freiwillig ein englisches Layout nutzen kann... ist das gerade "in" oder so? Na ja, der Beitrag von purestrain glänzt ja dafür auch mit Abwesenheit von Umlauten ;)
</offtopic>

GPHexor


Ist nicht "In" sondern wie G.o.D schon sagte, wirklich Zweckmaessig. Ich programmiere und dokumentiere immer auf Englisch, mein OS ist Englisch, alle meine Programme sind Englisch, und gerade bei C++ / C# etc. mit den massigen Klammern ( {} [] ) ist es eine wahre wohltat. Seitdem verrenke ich mir nicht mehr den Daumen :)

Das einzige Problem ist mein Nachname; Dieser enthaelt einen Umlaut =D
 
Also mal ganz ehrlich... Jeder der sagt mit GLBasic kann man nichts hochwertiges erstellen, der sollte sich mal die Demo laden. Erstmal ist GlBasic sehr schnell wie wir feststellen konnten und 2. erweiterbar mit c/++ zeilen dank inline funktion. DLL dateien können geladen und genutzt werden, somit sind auch komplexere sachen zu erstellen.

mfg
trucidare
 
trucidare said:
... 2. erweiterbar mit c/++ zeilen dank inline funktion. DLL dateien können geladen und genutzt werden, somit sind auch komplexere sachen zu erstellen.

mfg
trucidare

Was natuerlich dann wieder die "einfache handhabung" aushebelt. Ich werde mir mal die Demo laden, und schauen wie ich dann auf C++ Objekte zugreifen kann. Nichtsdestotrotz: Fuer Hobbyprojekte (also kleineren Rahmen, jump'n'run, puzzlespiele) wird GLBasic sehr sinnvoll sein, bisher habe ich aber noch kein "hochwertigeres" Projekt gesehen.

Angenommen meine Spielwelt besteht aus 100 "Dingen" (davon 30 mit unterschiedlichem Verhalten), wie kann ich die alle updaten? Schleifen und riesige if-then-else oder case bloecke, in dem Falle nach dem Motto "if objectId(i) = 1 then DoSomething1 else if ...." ? Leider weiss ich nicht, ob zumindest auch strukturen moeglich sind.
 
Hallo,

Strukturen kann mann in GLBasic wie folgt anlegen :

TYPE xy
x
y
ENDTYPE

LOCAL S AS xy

S.x = 1
S.y = 2

Gruß Heiko
 
Hallo HeikoJ,

Ok, da bin ich wieder etwas schlauer. Und wie wuerde obiges Szenario mit 100 Objekten (30 unterschiedliche) realisiert, die jeweils mehrere Methoden unterschiedlich implementieren? Interessiert mich wirklich.

Danke
 
G.o.D said:
wie jemand programmieren kann ohne englisches tastatur layout (oder einfach nur so tippen) versteh ich eh nicht :wacko:

Das ist ne gewöhnungssache... ich hab nen deutsches mac layout habe darauf programmieren gelernt und komme damit wunderbar zurecht auch wenn
purestrain said:
ft-alt-7 ;)
purestrain said:
Nichtsdestotroz: Ich kann mir gar nicht mehr vorstellen, wie man rein funktional programmieren soll. GLBasic mag zwar schneller einen Erfolg bringen, aber irgendwann wirds einfach kontraproduktiv. Mein Respekt allen, die Funktionale Projekte erfolgreich warten koennen, von Bilbiotheken mal abgesehen.

Da verwechselst du funktional mit prozedural... basic ist alles andere als funktional... in einer reinfunktionalen programmiersprache wie haskell zum beispiel gibt es keine seiten-effekte... man kann also keine variablen zuweisungen machen, es gibt keine globalen variablen und eine funktion hat keine weiteren informationen als den parameter und tut nichts anderes als einen wert zurückgeben.... ist nen riesen unterschied...
 
Hallo purestrain

Du kannst dann auch ein Array mit den definierten TYPE anlegen.
Dann hast Du 100 Objekte vom selben Type.

Beschreibe mal an einem Beispiel wie Du es genau meinst.

Gruß Heiko
 
Hallo,

Entschuldige, natuerlich Prozedural - Manchmal schreibe ich etwas komplett anders wie ich denke :lol:

HeikoJ. Stell dir ein Boulderdash Clone vor, indem es 30 verschiedene Steine gibt, die sich jeweils anders verhalten. Davon 100 Stk. im Spiel.

Sofern ich mich noch vom C64/QBasic erinnere, muss dann eine Methode geschrieben werden, die durch jeden Stein laeuft und anhand einer Id entsprechend weitere Funktionen aufruft. Z.b.
Code:
<i>
</i>function Update()
begin
 for i = 1 to AnzahlSteine
   if stein(i).classId = 1 then doSomething(stein(i))
   if stein(i).classId = 2 then doSomething2(stein(i))
 next i
end

Geht das jetzt unter GLBasic einfacher? Z.b. Stein(i).DoSomething() und jeder Stein implementiert diese Methode anders?

Gruss
 
Das was du meinst, heißt "Polymorphismus" und setzt Vererbung voraus, was wiederum Klassen voraussetzt. Den bisherigen Posts nach zu urteilen, gibt es aber noch nicht einmal Klassen, sondern nur Strukturen. Deshalb gehe ich mit hoher Wahrscheinlichkeit davon aus, dass GLBasic so etwas nicht kann, obwohl ich die Sprache nicht kenne.
Eine weitere Möglichkeit das gewünschte zu erreichen wären Funktionszeiger, wobei ich aber auch noch nie was von Zeigern bei Basic gehört habe. Sieht also eher schlecht aus.
 
Nichs fuer ungut; Ich weiss das es polymorphismus heisst, ich war nur nicht sicher ob die Basicnutzer dieses kennen.

Worauf ich hinauswilll ist die Klaerung, ob nun wirklich komplexe Projekte in GLBasic gestaltet werden koennen. Wenn GLBasic per Inline C++ unterstuetzt (wie auch immer das gehen wird) sollten solche Sprachelemente ja irgendwie in minimaler Form vorhanden sein. Es muessen ja nicht unbedingt Zeiger fuer die Endnutzer vorhanden sein, vielleicht hat sich der GLBasic Entwickler etwas anderes einfallen lassen?

Einen riesigen Switch-Case Block kann ich mir heute gar nicht mehr vorstellen...

Jedem seine Sprache, mir die Objektorientierten :)
 
Hi, in GLB gibts nen "Zeiger", aller dings habe ich denn noch nicht genutzt bzw. gebraucht.
GLB-Hilfe said:
BYREF

FUNCTION f: BYREF arg#$
Mit dem Modifizierer "BYREF" kann man eine Variable als Referenz übergeben. Damit kann man innerhalb der Function den Wert der Übergabevariable ändern. Wörter werden auf diese Weise schneller übergeben, da nur ein Zeiger statt dem gesamten Inhalt kopiert werden muss.
Felder werden immer als Referenz übergeben. Hier ist ein BYREF obsolet.

Dieses Schlüsselwort ist für Profis gedacht.



LOCAL b$
b$ = "XY"
foo(b$)

// print "test"
PRINT b$, 0,0
SHOWSCREEN
MOUSEWAIT

FUNCTION foo: BYREF a$
a$ = "test"
ENDFUNCTION

Zeiger sind in "heutigen" BASIC-Dialekten gar nicht so unüblich,
PureBasic hats, BlitzMax hats, wobei BM inzwischen eine mischung zwischen Basic und Java/Cpp ist in richtung OOP.
 
purestrain said:
Hallo,

Entschuldige, natuerlich Prozedural - Manchmal schreibe ich etwas komplett anders wie ich denke :lol:

Geht das jetzt unter GLBasic einfacher? Z.b. Stein(i).DoSomething() und jeder Stein implementiert diese Methode anders?

Gruss

Hallo,

sowas geht in GLBasic nicht, das es nicht objektorientiert arbeitet.
Du kannst aber eine Funktion schreiben und innerhalb dieser je
nach "Flag" anders reagieren. Läuft natürlich wieder auf "endlose" IF-
oder CASE-Abfragen hinaus.

Desweiteren kannst Du einer Funktion einen Zeiger auf einen TYPE
übergeben, so das Du die Werte des übergeben TYPE in der Funktion
ändern kannst.

Gruß Heiko
 
Back
Top