Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - S.O.P.M.

Pages: 1 2 [3]
31
Bug Reports / Rückgabewert einer Funktion
« on: 2008-Apr-21 »
Es ist vielleicht kein Fehler aber mir ist etwas aufgefallen, was ich merkwürdig finde:

Code: (glbasic) [Select]
FUNCTION getinitialcmd$: l
LOCAL i1, strval1$
IF l < LEN(plns$[])
FOR i1 = 0 TO LEN(plns$[l]) - 1
IF MID$(plns$[l], i1, 1) <> " "
strval1$ = strval1$ + MID$(plns$[l], i1, 1)
ELSEIF strval1$ <> ""
RETURN strval1$
ENDIF
NEXT
ENDIF
ENDFUNCTION
Diese Funktion soll das erste Wort einer String-Feldvariable zurückgeben bzw. einen Nullstring, also "", wenn sie nur Leerzeichen enthält oder eine Länge von 0 hat. Dies nur mal zum Verständnis, was die Funktion machen soll.

Funktionen, die einen nummerischen Wert zurück geben, haben einen Rückgabewert von 0, sofern nicht ein RETURN mit einer Angabe eines Wertes aufgerufen wurde, richtig? Nun dachte ich mir, müsste Gleiches für Funktionen mit einem Stringreturn gelten, sprich, wenn kein RETURN mit Wert, dann geben sie "" zurück. Dies scheint aber nicht so zu sein. In meinem Programm gibt diese Funktion nie "" zurück, selbst, wenn das Ende der FOR-Schleife erreicht wurde! Wenn ich nach dieser FOR-Schleife ein RETURN "" einfüge, funktioniert alles, wie es soll.

Meine Frage daher: ist das normal?

32
GLBasic - de / Rekursion
« on: 2008-Apr-08 »
Moin,

Wie sieht es bei GLBasic damit aus? Ich muss eventuell eine Funktion schreiben, die sich auch selbst aufruft. Kann GLBasic das? Die Frage deshalb, weil ich sonst einiges von Anfang an anders planen müsste.

33
GLBasic - de / Zeichensätze mit 256 Zeichen
« on: 2007-Nov-20 »
Hi,

Bisher hatte ich immer nur Zeichensätze mit 128 Zeichen verwendet und jetzt habe ich mir erstmalig mit dem bei GLBasic beiliegenden Tool Zeichensätze erstellt und weil ich auch ß, ä, ö, ü und ein paar andere erweiterte Zeichen brauche und das Tool die Option '256 Characters' anbietet, habe ich die auch glatt genutzt. Nun wiederspricht solch ein Zeichensatz dem, was in der Hilfe steht. Letzterer nach muss ein Zeichensatz 16 * X und 8 * Y Pixel groß sein. Da hat mich schon gewundert, dass die Zeichen trotzdem richtig angezeigt werden, denn wenn GLBasic von einer 16 x 8 Zeichenmatrix ausgehen würde, hätten jeweils 2 Zeichen übereinander angezeigt werden müssen. Jetzt habe ich allerdings festgestellt, dass unter diesen Umständen die Transparenz völlig verloren geht, sprich, egal welche Farbe ich als Transparente im Font festlege und später im Programm, gibt es keine Transparenz mehr und somit sind die Fonts für mein Projekt unbrauchbar.

Ich wollte fragen, ob das normal so ist, weil eben 256 Zeichen oder ob es trotzdem funktionieren müsste?

34
GLBasic - de / SETPIXEL und DRAWLINE
« on: 2007-Oct-26 »
Hat einer von euch diese beiden Befehle schonmal auf dem GP2X verwendet und damit Probleme gehabt?

Ich frage deshalb, weil bei mir eine halbe Katastrophe entsteht. Beim Setzen von Endpunkten für eine Linie außerhalb des Bildschirmes kommt es zu fehlerhafter Darstellung bis zum totalen Absturz der Anwendung (die Linie wird also nicht korrekt "geclippt"). SETPIXEL scheint ein extremes Flackern des gesamten Bildes zu verursachen, ob es auch zum Absturz bei entsprechenden Koordinaten führt, kann ich im Moment nicht sagen.

EDIT: noch zur Ergänzung, warum muss ich Koordinaten außerhalb des Bildschirmes verwenden? Ganz einfach - ich habe mir eine kleine simple 3D Engine geschrieben, die Drahtgittermodelle darstellen, um alle Achsen drehen und verschieben kann. Da ist dies es nicht ganz unumgänglich.

35
Here is my version of Freecell which should be an improvement to the game that was already in the GP2X-Filearchive. Thanks to GLBasic the programming was like a walkover.
Here is the link to the filearchive for everyone who is an owner of the GP2X console:

http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,25,2345

36
Hier ist meine Version von Freecell, die eine Verbesserung der bereits im GP2X-Filearchiv vorhandenen darstellen soll. Dank GLBasic war die Programmierung ein Kinderspiel ;)
Hier der Link zum Filearchiv, wer die Konsole besitzt und es mal testen möchte:

http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,25,2345

37
GLBasic - de / GP2X - kleinere GPE's
« on: 2007-Sep-26 »
Hi Gernot,
mal so eine rein technische Frage: wäre es machbar, dass die vom Compiler erzeugten GPE-Dateien für den GP2X deutlich kleiner sind - sagen wir nicht größer 500 KB? Es gibt ja da diesen GPE-Compressor, doch nachdem ich mal die GPE von meinem Spiel Blox durchgejagt hatte, konnte das Spiel die Sprites nicht mehr finden - von daher ist dieser Compressor unbrauchbar in Bezug auf GLBasic.
Ich selbst habe eigentlich kein Problem mit der Dateigröße aber es gibt andere Leute, die fragen sich, warum ein Spiel so viel Platz auf ihrer SD-Karte nimmt, wenn es doch ganz einfach ist. Daher diese Frage. Mich würde nur interessieren, ob es machbar wäre.

38
Wie ich im GP2X-Forum gelesen habe, soll es bald einen neuen Handheld geben. Ich meine nicht etwa den F-200, der von Gamepark Holdings kommt, sondern diesen anderen. Dieser wird zwar auch ARM-CPU's besitzen, jedoch gibt es keine wirkliche Kompatibiliät für Software mehr. Die Praxis wird dann so ablaufen, dass sich die meisten - oder die, die es sich leisten können - den neuen Handheld kaufen und dann nützen keine mit GLB entwickelten Programme mehr.
Daher meine Frage an Gernot: Wirst du einen neuen Compiler schreiben, wenn der neue Handheld draussen ist, oder würde das zu weit führen? Ich kann mir vorstellen, wie viel Arbeit bis jetzt in GLB steckte und bis jetzt ist ein Optimum an Speed für den GP2X noch nicht erreicht und dann ist der schon wieder von einem neuen Gerät überholt - wäre schade um GLB.

39
Hier mal ein Beispiel, wie man sich unnötige IF-Abfragen sparen kann ;)

Code: (glbasic) [Select]
GLOBAL X, Y

WHILE KEY(1) = 0
    INC X, KEY(205) - KEY(203)
    INC Y, KEY(208) - KEY(200)
    FILLRECT X, Y, X + 20, Y + 20, 0xffffff
    SHOWSCREEN
WEND

40
Code Snippets / Vorzeichen umkehren
« on: 2007-Aug-04 »
Die Fortgeschrittenen unter euch werden sicherlich wissen, wie man das macht aber da es vielleicht nicht jeder weiß und es glaube ich auch noch nicht als Beispiel hier aufgeführt ist - so einfach kann man das Vorzeichen einer Zahl umkehren:

Code: (glbasic) [Select]
X = X - X * 2Könnte nützlich sein, wenn man mal einen Rechner schreiben möchte.

41
Hi Gernot, habe festgestellt, dass bei Sprites seit dem neuen Befehl SETTRANSPARENCY nicht nur dieses Pink sondern auch gleichzeitig Schwarz als transparente Farbe genommen wird. Am PC ist es nicht so aber auf dem GP2X. Ich finde das nicht weiter schlimm aber wollte nur fragen, ob das seine Richtigkeit hat oder eher nicht so vorgesehen war *g*

42
GLBasic - de / Feld eines Typen / DIMPUSH
« on: 2007-Jun-16 »
Hey,

ich möchte gerne ein Feld von einem Typen haben und wollte das wie folgt machen. Ich definiere mir also meinen Typ

  TYPE ObjectProperties
      PosX
      PosY
      Mode
      State
   ENDTYPE


und will dann ein Feld damit verknüpfen

  DIM Object[10] AS ObjectProperties

Weil ich dabei einen Syntax Error bekomme, versuche ich es so:

  GLOBAL Object[] AS ObjectProperties

Jetzt ist das Feld jedoch noch nicht dimensioniert (erlaubt er mir mit GLOBAL nicht) und ich tue dies erst jetzt:

  DIM Object[10]

Nun sollte jeder Index dieses Feldes die Member des Types ObjectProperties haben, richtig!? Also versuche ich jetzt eine Zuweisung eines Wertes:

  Object[0].PosX = 1

Darauf hin meldet mir der Compiler jedoch "error : wrong argument type : TYPE  is not declared" Was mache ich falsch? Wenn ich übrigens einen weiteren Type mit einem Feldmember dieses Types erstelle, dann funktioniert es. Allerdings ist mir das dann zu umständlich und auch nicht mehr übersichtlich. Es muss doch direkt möglich sein!

Und noch eine Frage zu DIMPUSH. Was für ein Argument erwartet dieser Befehl an letzter Stelle? In der Hilfe steht "DIMPUSH feld[], eintrag", doch was ist mit Eintrag gemeint? Etwa der Wert, der dem neu hinzugefügten Index zugewiesen wird? Offensichtlich aber nicht, denn ich bekomme immer "error : wrong argument type :"

43
GLBasic - de / Zeit messen
« on: 2007-Jun-06 »
Hallo,

und zwar dachte ich mir, mit Hilfe von GETTIMER() beliebige Zeiten zu messen. Im folgenden Beispiel möchte ich den Wert der Variablen Counter je Sekunde erhöhen. Dazu verwende ich eine zweite Variable ElapsedMSecs, zu der ich die seit dem letzten Aufruf von SHOWSCREEN vergangenen Millisekunden addiere. Sobald deren Wert mindestens 1000 erreicht hat, müsste das ziemlich genau einer Sekunde entsprechen.

Code: (glbasic) [Select]
WHILE TRUE
INC ElapsedMSecs, GETTIMER()

IF ElapsedMSecs > 999
ElapsedMSecs = 0
INC Counter, 1
ENDIF

// weiterer Code hier...

SHOWSCREEN
WEND
Wenn ich diesen Code in der Praxis verwende, werden mir die Sekunden jedoch deutlich zu schnell gezählt - etwa doppelt so schnell. In meinem Spiel habe ich daher längst eine andere Möglichkeit verwendet, mit der ich Zeit messen kann, die auch sehr genau funktioniert. Dennoch würde mich interessieren, wo hier mein Denkfehler liegen könnte! Hat jemand eine Idee?

44
Hey,

Nachdem ich anfängliche Probleme mit Sprites und mit dem Compiler hatte, ist mir inzwischen bereits eine perfekte Menüsteuerung für ein zukünftiges Spiel gelungen und auch der Test auf dem GP2X mit Schuhschachtel hat einwandfrei geklappt. Das ist äußerst lobenswert und deshalb wollte ich das hier auch mal loswerden. Nur Fragen und Kritik darf nicht sein ;-)

Natürlich kommen trotzdem beim ausgiebigen Testen einer neuen Programmiersprache auch immer wieder Fragen auf. Und zwar brauchte ich jetzt eine Funktion wie VAL, die einen String in eine Zahl konvertiert. Meiner Meinung nach oft unverzeichbar bzw. sehr praktisch. Leider finde ich soetwas in der Hilfe nicht. Gibt es wirklich keine solche Funktion oder habe ich nur nicht richtig gesucht?

Zweite Sache ist der Befehl USEASBMP. Unglaublich wichtig finde ich, weil man nicht immer ständig den kompletten Bildschirminhalt neuzeichnen will und somit alle statischen Objekte schnell als neuer Hintergrund definiert werden sollten. Bei mir am PC hält dieser Befehl das Programm für ganze 2 Sekunden auf - das kommt mir sehr viel zu viel vor! Ich habe in der Hilfe gelesen, dass der Befehl auf manchen Grafikkarten langsam werden kann aber das ist ja mehr als langsam! Gottseidank  ist er aber auf dem GP2X recht schnell, daher ist es nur halb so wild. Für das Testen meiner Programme am PC jedoch wird das damit schon mühsamer.

Daher meine zweite Frage: ist das zu langsam und stimmt hier etwas nicht? Meine Grafikkarte ist wie schon erwähnt eine NVIDIA GeForce 6200 - ein paar Monate inzwischen alt. Könnte ein aktueller Grafiktreiber (wobei ich annehme, einen recht aktuellen zu haben) helfen oder lohnt es nicht, es zu versuchen?

45
Hi. Bin völlig neu mit GLBasic und probiere derzeit mit der Demo-Version herum. Möchte zukünftig für den GP2X Programme schreiben und nun habe ich ein gravierendes Problem, so dass ich nicht weiter komme. Was ich auch versuche, es werden keine Sprites angezeigt, während die einfachen Zeichenoperationen (z.B. Fillrect) klappen. Um sicherzustellen, dass es nicht an mir liegt, habe ich probiert, die Beispiele auszuführen. Auch da ist nichts zu wollen, keine Sprite werden dargestellt. Die Bitmap-Dateien liegen auch im richtigen Verzeichnis. Was ist da los?

Zweites Problem ist, dass der Compiler willkürlich arbeitet. Manchmal compiliert er, manchmal nicht. Einzelne Dateien werden grundsätzlich nicht ausgeführt, man muss immer im Projekt arbeiten. Wenn nun ein neues Projekt erstelle und dann eine Beispieldatei öffne, um sie auszuprobieren, startet er meistens nicht. Und wenn, dann habe ich das oben beschriebene Problem. Was in aller Welt mache ich falsch?

Meine Grafikkarte ist die NVIDIA GeForce 6200 (256 MB) und ich habe DirectX 9.0c installiert. Daran kann es doch unmöglich hängen oder?

Pages: 1 2 [3]