| |
|
|
- page 1 - |
|
funkheld | allô, guten journée. j'ai un kombinationsproblem avec qui souris.
j'ai sur dem Schwungrad de meinem Trimmrad une optische Mausplatine befestigt(5 Euro-souris). qui Befestigung est, cela, si je trete, qui Mausposition de y-0 pour y-Max allez.
comment peux on es faire, cela qui souris zb sur y=0 gesetzt wird et chez y>500 un Zähler gezählt wird et qui souris ensuite wieder sur y=0 gesetzt wird. ca ensuite dans einer Boucle abläuft.
cet kombination bekomme je pas hin, weil qui souris chez un certain Geschwindigkeit überfordert ist, vous zählt ensuite pas plus plus. avec "sleep 1" ca va aussi pas.
Woran liegt cela. je compiliere avec XPSE. KompilierenMarqueSéparation {$cleq}
Def @Getcursorpos(1) !"user32","GetCursorPos"
Def @Setcursorpos(2) !"USER32","SetCursorPos"
Struct Mauskoordinaten = X&,Y&
Declare Xpos&,Ypos&,Curpos#,zaehler&
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
Window 200,0 - 440,440
@Setcursorpos (100,0)
While 0 = 0
Sleep 5
Dim Curpos#,Mauskoordinaten
@Getcursorpos(Curpos#)
Xpos& = Curpos#.X&
Ypos& = Curpos#.Y&
if Ypos& > 500
@Setcursorpos (100,0)
zaehler&=zaehler&+1
endif
Dispose Curpos#
Drawtext 0,0,"Zähler: " + zaehler& + @Space$(30)
Endwhile
merci.
Gruss |
|
|
| |
|
|
|
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
- page 1 - |
|
| @Funkheld: Hab Dir ici la fois quoi qui Strecke misst... quelque chose comme?
Herunterladen KompilierenMarqueSéparation {$cleq}
Windowstyle 31
Windowtitle "Cursorposition ermitteln"
Window 500,500
setcursorpos((winRight-winLeft)\2+winLeft,(winBottom-winTop)\2+winTop)
var modified&=0
var strecke&=0
var my2MousePositions&=globalAlloc(gPTR,16)
getCursorPos(my2MousePositions&)
rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)
while 1
waitinput 10
getCursorPos(my2MousePositions&)
settext hWnd,"X:"+str$(long(my2MousePositions&,0))+" Y:"+str$(long(my2MousePositions&,4))+" Strecke:"+str$(strecke&)
add strecke&,abs(long(my2MousePositions&,0)-long(my2MousePositions&,8))+abs(long(my2MousePositions&,4)-long(my2MousePositions&,12))
if long(my2MousePositions&,0) > winRight
long my2MousePositions&,0=winLeft
inc modified&
endif
if long(my2MousePositions&,0) < winLeft
long my2MousePositions&,0=winRight
inc modified&
endif
if long(my2MousePositions&,4) < winTop
long my2MousePositions&,4=winBottom
inc modified&
endif
if long(my2MousePositions&,4) > winBottom
long my2MousePositions&,4=winTop
inc modified&
endif
if modified&
modified&=0
setCursorPos(long(my2MousePositions&,0),long(my2MousePositions&,4))
endif
rtlMoveMemory(my2MousePositions&+8,my2MousePositions&,8)
wend
globalFree(my2MousePositions&)
f='./../../funktionsreferenzen/XProfan/end/'>end
si Du qui add strecke la ligne dahin änderst: KompilierenMarqueSéparationadd strecke&,(long(my2MousePositions&,0)-long(my2MousePositions&,8))+(long(my2MousePositions&,4)-long(my2MousePositions&,12))
(alors sans abs), ensuite wird qui rückwärtsgefahrene Strecke aussi de qui Streckenlänge subtrahiert statt zur Streckenlänge addiert.
PS: chez XPSE brauchst qui ganzen Standard-APIs pas déclarer et c'est sogar sinnvoller es ensuite aussi pas trop 1faire là qui Aufrufe dans deutlich schnellere Calls umgewandelt volonté. |
|
|
| |
|
|
|
|
| |
|
- page 2 - |
|
| sur meinem ordinateur peux je qui souris so vite bewegen dass sogar 20 km/h
angezeigt volonté. comment grand ist Dein hWnd? peux es son cela qui de Dir genutzte
souris simple pas plus rapide erfassen peux? |
|
|
| |
|
|
|
funkheld | j'ai maintenant la fois : add tme&,200 eingestellt. maintenant funktioniert es sur 15Km/h.
Welchen Einfluss hat cela eigentlich?
Gruss |
|
|
| |
|
|
|
| Pour wievielen Millisekunden qui Grafikprozedur ablaufen soll -
chez 100 alors 10 la fois pro seconde et chez 200 5 la fois pro seconde. |
|
|
| |
|
|
| |
|
- page 3 - |
|
|
funkheld | pourquoi augmenté sich ensuite qui Geschwindigkeit? Ist là irgendein Einfluss drin, si je 200 eingebe?
comment errechnest du qui Geshwindigkeit?
Gruss |
|
|
| |
|
|
|
| Na il y a doch strecke& et alle X ms merke je dans tmp& strecke& et avec cela ist bien sûr combien strecke dans qui Zeit gemacht wurde. si Du seulement 5 la fois statt 10 la fois pro seconde rechnest ensuite peux doppelt so viel Strecke dans qui Zeit gemacht volonté mais qui calculation pourrait ensuite pas plus stimmen là sur 100 ms abgestimmt.
si Du alle 200 statt 100 ms rechnest ensuite müsstest Geschwindigkeit par 2 prendre. |
|
|
| |
|
|
|
funkheld | ah bon...., merci pour den Hinweiss.
une Grafische spielerei: tu as doch déjà viele Sachen dans Opengl programmiert. je voudrais la fois une Geländeplatte sans Höhen et Tiefen avec Spritebäumen unendlich bewegen, je pour dem comment vite on dans qui Pedale tritt.
comment peux on cela realiseren ?
Gruss peter |
|
|
| |
|
|
|
| je serait empfehlen cela erstmal separat de diesem Programme ici trop realisieren et
cela dans einem eigenen Thema trop behandeln. |
|
|
| |
|
|
|
funkheld | allô, guten journée. j'ai un Programme, wohin sich un Ogl-Sprite je pour Tretgeschwindikeit de unten pour dessus bewegt, jusque qui Geschwindigkeit wohin cela Dateneinlesen qui Lasermaus aussetzt. qui Steigerung qui Geschwindigkeit ist pas so deutlich erkennbar beim Sprite. comment peux on es ici maintenant im Programme pro Zeiteiheit so messen, cela beim schnelleren Treten une deutliche erkennbare Bewegung des Sprites erkennbar ist. Es venez maintenant pas sur qui genaue Geschwindigkeit à, mais es venez maintenant sur qui Bewegung des Sprites à.
merci.
Gruss KompilierenMarqueSéparation {$cleq}
declare hWin&,hintergrpic&,vordergrpic&
declare ende&,winkel!,groesse&,dib&,array&
declare bild_auto&,tex.auto&
declare bmi#,ogl_rgb#
declare x1!,y1!,dx!,dy!
declare bereich#
Dim Bereich#, 16
Def &GL_BGR $80E0
DEF CreateDIB(2) !"dib","CreateDIB"
DEF FreeDIB(1) !"dib","FreeDIB"
DEF DrawDIB(4) !"dib","DrawDIB"
DEF CloneDIB(1) !"dib","CloneDIB"
dib&=usedll("dib.dll")
hintergrpic& = create("hNewPic", 400,700,rgb(255,255,0))
vordergrpic& = create("hNewPic", 400,700,rgb(255,255,0))
bild_auto& = create("hNewPic", 128,128,rgb(255,255,0))
array&=CreateDIB(128,128)
groesse&=128*128*4
dim ogl_rgb#,groesse&
Window 20,20-800,800
Cls @RGB(220,220,220)
hWin& = @Create("text", %hWnd, "Test1", 10, 10, 128,128)
oGL("Init", hwin&, 0,0, 0, 0)
oGL("PosMode", 1)
ogl("glReadBuffer",~GL_Back)
tex.auto&=oGL("LoadTextureBMP","data\\auto.bmp",1)
drawglscene
ende&=1
winkel!=90
dx!=100
dy!=600
WHILE ende&
getCursorPos(bereich#)
if long(bereich#,4) > 700
setCursorPos(100,0)
y1!=Sin(-(winkel!)/180.0*pi())*2
x1!=Cos(-(winkel!)/180.0*pi())*2
dx!=dx!+x1!
dy!=dy!+y1!
if dy! < 0.0
dy!=600
endif
endif
if isKey(81)
winkel!=winkel!+1.0
endif
if isKey(69)
winkel!=winkel!-1.0
endif
drawglscene
ENDWHILE
end
proc drawglscene
OGL("Clear")
OGL("origin",0,0,-1.11)
OGL("texture",tex.auto&,1)
OGL("rotate",0,0,winkel!)
OGL("quad",0.5,0.5)
OGL("show")
ogl("glReadPixels",0,0,128,128,&GL_BGR,~GL_UNSIGNED_BYTE,ogl_rgb#)
~setDIBits(%hdc,bild_auto&,0,128,ogl_rgb#,array&,0)
StartPaint vordergrpic&
DrawPic hintergrpic&,0,0;0
drawpic bild_auto&,dx!,dy!;-1
endpaint
DrawPic vordergrpic&, 300,5;pan>
endproc
|
|
|
| |
|
|
|
| Imho manquer Fichiers comment z.B.:
|
|
|
| |
|
|
|
funkheld | allô,j'ai qui DIB ici aus dem Forum. Habe vous maintenant drangehängt.
peut-être pourrait on oui aussi un 2D-Hintergrund herstellen sans Opengl, qui sich je pour Geschwindigkeit bewegt et im Vordergrund une Fahrradfahrer-Bmp.
Gruss |
|
|
| |
|
|
|
| c'est oui alles entier simple.
quoi ist hiermit? [...] |
|
|
| |
|
|
|
funkheld | Jup, c'est maintenant gelöst avec deinem Programme.
merci.
Gruss |
|
|
| |
|
|