Seite 3 von 3
Verfasst: 12.10.2006 18:52
von Agent
Moinsen (wenn auch schon abend)
Danke für eure zahlreichen Posts. Ich fand alle gut!

Teilweise ziemlich aufwendig. Je nach dem, zu welchem Zweck.
Für ein einfaches Fenster hätte es auch #null's einfache version mit den 98% getan. PMV's version ist am professionellsten und universellsten.
Ich habe mir alle gespeichert und experimentiere damit gerade. Mal sehen was zum Einsatz kommt bei der ein oder anderen Anwendung.
Vielen Dank!!!
Verfasst: 14.10.2006 15:34
von Macros
Frage, warum ist PMV's version so unsiversel?
das ist meine auch,
und der Code ist kürzer *gekänkt bin* ^^
Hier das ganze nochmal schöner dargestellt:
Code: Alles auswählen
InitSprite()
OpenWindow(1,200,200,310,300,"test")
CreateGadgetList(WindowID(1))
TextGadget(10,0,0,100,30,"New Window X")
TextGadget(11,0,30,100,30,"New Window Y")
StringGadget(1,100,00,100,30,"")
StringGadget(2,100,30,100,30,"")
ButtonGadget(0,200,00,100,60,"Submit")
TextGadget(5,0,60,310,30,"")
Targetx=WindowX(1)
targety=WindowY(1)
OpenWindowedScreen(WindowID(1),0,100,310,200,0,0,0)
Repeat
For schleife=1 To 20
event=WindowEvent()
If event=#PB_Event_Gadget
If EventGadget()=0
Targetx=Val(GetGadgetText(1))
targety=Val(GetGadgetText(2))
move=0
winkel=0
EndIf
EndIf
If event= #PB_Event_CloseWindow
End
EndIf
Next
; der Kern
If WindowX(1)<>target Or WindowY(1)<>target
If move=0
xmove=(Targetx-WindowX(1))/2
ymove=(targety-WindowY(1))/2
move=1
xl=WindowX(1)
yl=WindowY(1)
EndIf
EndIf
If move=1
winkel+1
Delay(10)
bogenmass.f=winkel*3.1415926/180
x.l=xl-Cos(bogenmass)*xmove+xmove
y.l=yl-Cos(bogenmass)*ymove+ymove
SetWindowPos_(WindowID(1),#HWND_TOPMOST,x,y,310,300,0);#SWP_NOZORDER)
If winkel=180
move=0
winkel=0
Targetx=Random(1024-300)
targety=Random(768-300)
EndIf
EndIf
; ende des Kerns
StartDrawing(ScreenOutput())
;Box(0,0,310,200)
speed.f=Sqr(Pow((x-xold.f),2)*Pow((y-yold.f),2))
If speed>speedmax
a+1
If a>1
speedmax=speed
SetGadgetText(5,"Maximaler Speed: "+Str(speedmax))
EndIf
EndIf
Color=RGB(Abs(Sin(speed/6)*255),Abs(Cos(speed/6)*255),0)
Circle(x/3,y/3,2,Color)
StopDrawing()
FlipBuffers()
xold=x
yold=y
Until event=#PB_Event_CloseWindow
Verfasst: 14.10.2006 15:47
von Brügge
mom du möchstet doch eine variable von 100 langsam nach 75 bringen dann schneller werdend nach 50 und wieder langsam werdend nach 25 und stoppend bei 0 oder?
wenn ja ganz einfach!
Code: Alles auswählen
Global bogen.d
bogen = 3.1415926 / 180
For i = 90 To 270 step speed
x = Sin(i * bogen)*breite /2 + breite /2
Debug x
Next i
also: breite sind die 100 pixel du kannst jetzt auch 200 nehmen.
speed: desto größer desto schneller. achja du musst eine sehr sehr kleine zahl nehmen ^^
mfg bruegge!
Verfasst: 14.10.2006 15:55
von Agent
hi Brügge.
*hehe*
aber dein Beispiel funzt nicht. auch nicht wenn ich aus speed eine zahl mache (pb4). habe die variablen definiert mit werten, erfolglos.
Verfasst: 14.10.2006 16:00
von Brügge
ohh sorry mein fehler habe es vorher nicht getestet...
so jetzt geht es:
Code: Alles auswählen
Global bogen.d
Global breite.d
Global i.d
Global speed.d
speed = 0.08
breite = 100
bogen = 3.1415926 / 180
i = 90
Repeat
i = i + speed
x = Sin(i * bogen)*breite /2 + breite /2
Debug x
Until i >= 270
mfg bruegge
Verfasst: 14.10.2006 16:00
von Macros
Letzter Test, ob ich nicht doch unsichtbar geworden bin ^^
Agent? hast du meinen Post oben gelesen?
Verfasst: 14.10.2006 17:21
von PMV
PB kann keine Variablen hinter Step
mach ma drauß ne Konstante
@Macro
ich hab mir deine Code jetzt ne gewisse Zeit lang angeschaut, wie will
man da die Beschleunigung festlegen? Oder die Bremskraft? Es ist zwar
möglich ... aber dafür ist meine Version wohl etwas besser geeignet

Oder versuch mal mit deiner Version die gleichen Kräfte ein zu bauen,
wie ich sie in meinem Beispiel hab: 10 m/s²
Das einstellen einer maximalen Geschwindigkeit ist auch nicht ohne
weiteres möglich. Dafür fehlen noch ein paar Variablen, sofern das so
überhaupt möglich ist
MFG PMV
Verfasst: 14.10.2006 17:25
von Macros
Wenn ich ein Fenster nach Sinus bewegen will,
also schneller werden, und wieder abbremsen,
brauche ich nicht gleich 100 Parameter, lieber klein und schnell ^^
Aber das ist jetzt natürlich meine Meinung.
Ein bisschen an der Gesamtgeschwindigkeit kann man ja drehen,
mach aus "winkel" eine double und erhöhe/senke den Wert,
der dazugezählt wird.