Seltsamer Mausprobleme

Previous topic - Next topic

amarliani

Hallo miteinander,
folgendes Problem: Ich benutze MOUSESTATE für die Mausabfrage. In den bisherigen Projekten war auch alles problemfrei. Aber in meinem letzten Projekt kriege ich völlig seltsame Effekte: Die Funktion liefert andere Mauspositionen zurück, als die Maus tatsächlich hat!
Und wenn ich dann einfach mal einen MOUSESTATE abfrage, auf den Schirm drucke, einen weiteren abfrage, ohne die Maus zu verändern, und den dann auch drucke, kriege ich zwei sowohl in x- als auch in y-Koordinaten erheblich differierende Ergebnisse. Ein paar Pixel hätt ich ja verstanden, aber teilweise fast 100 Pixel??

Ich hab mal das gesamte Projekt angehängt , falls jemand Lust hat, sich das Ganze anzusehen. Any idea?

[attachment deleted by admin]

Schranz0r

Niemals soviele WHILE-WEND ineinander nutzen ;)
Denke da hast du nen Hund drin, hab jetzt leider auch nicht den nerv den ganzen Code zu zerpflücken, aber liegt zu 90% an der "falschen" Nutzung der Schleifen ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

amarliani

#2
Hmmm. Also eigentlich ist das Ganze nur eine While-Wend-Schleife, die paar anderen da drin sind lediglich Warteschleifen, um das Programm eine definierte Zeit anzuhalten. Deren Struktur ist immer exakt gleich:
Code (glbasic) Select
zeit=GETTIMERALL()
WHILE GETTIMERALL()-zeit < 800; WEND

Wenn das ein Problem ist, wie sonst kann man denn so was lösen? Ich brauche folgende schematische Ablaufstruktur:
Code (glbasic) Select
WHILE i < LEN(folge[])
   zeige Sprite folge[i]
   spiele Sound folge[i]
   Pause für 800ms
   Eingabe auswerten
   IF Eingabe ok
      INC i,1
   ELSE
      i=1000
   ENDIF
WEND

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

für Pause gibt es "SLEEP".

amarliani

seufz... Vielleicht sollte ich doch endlich mal die _ganze_ Doku lesen...

Aber im Ernst: SLEEP hilft mir insofern nicht, als mein Problem damit bleibt. Nur der Code wird sauberer... Irgendwo steckt da ein dicker Hund, und ich bin zu vernagelt, ihn zu finden. Ich glaub, ich fang einfach noch mal von vorn an.

Was anners in dem Zusammenhang: Kann man eigentlich in GLBasic symbolische Konstanten definieren? War für Game-Zustände in XNA immer so praktisch...

Kitty Hello

Der CONST Befehl ist noch beta.
Du kannst es aber so machen:

TYPE TconstXY
a=1
b=7
ENDTYPE
GLOVAL XY as TconstXY

PRINT XY.a, 0,0

amarliani

 =D Prima Idee! Bewirkt letztlich genau das, was ich wollte, danke! An Types hatte ich noch gar nicht gedacht...