Linie mit Kreis soll maus folgen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Farami

Betreff: Linie mit Kreis soll maus folgen

BeitragDo, Feb 09, 2006 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho. Hab hier in dem Forum mal nen Code-Schnipsel gesehen bei dem nen Kreis mit einer Linie die von der Mitte aus nach oben zeigte und sich dann zur Maus drehte. Danach hat sich der Kreis samt Linie in Richtung maus bewegt bis es ankam. Bewegte man die Maus folgte es weiter und drehte sich langsam zur Maus.
Leider konnte ich nach exzessivem "Suchen"-Knopf gebrauch diesen Code Schnipsel nicht mehr wiederfinden und hab ohne vorlage versucht es so gut es ging nachzumachen. Leider hakt es bei mir schon ziemlich am Anfang.

Mein momenantiger Code sieht so aus:

Code: [AUSKLAPPEN]

Graphics 800, 600, 32, 2
SetBuffer BackBuffer()

Global Kreis_x = 400, Kreis_y = 300
Global LSX = 410, LSY = 310
Global LEX = 410, LEY = 290
Global radius = 100

While Not KeyHit(1)
   Delay(15)
   Cls
   
   mx = MouseX()
   my = MouseY()
   
   Abstand_x = mx - (Kreis_x+10)
   Abstand_y = my - (Kreis_y+10)
   
   Text 50, 100, "Abstand X: "+Abstand_x
   Text 50, 120, "Abstand Y: "+Abstand_y
   Text 50, 140, "Atan2: "+ATan2(my - Kreis_y+10, mx - Kreis_x+10)
   
      
   
   Rect MouseX()-10, MouseY()-10, 20, 20, 0
   
   ;Das Ding soll sich zum Viereck bewegen!
   Oval Kreis_x, Kreis_y, 20, 20, 0
   Color 255, 0, 0
   Line LSX, LSY, LEX, LEY
   Color 255, 255, 255
   

   Flip
Wend


Währe über einen Link zum Code-Schnipsel oder weiterhilfe sehr dankbar. Rolling Eyes

Spikespine

BeitragDo, Feb 09, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ist zwar wahrscheinlich nicht der codeschnipsel, den du suchst, aber vielleicht hilft dir das hier etwas weiter.

Code: [AUSKLAPPEN]
;Mauszeigerverfolgung
;2005 by Spikespine

Graphics 800,600,32,2
SeedRnd MilliSecs()
HidePointer

;//Bild erstellen, 90 einzelbilder: 4° Abstufung
Dim pointer(89)
pointer(0) = CreateImage(3,10)
SetBuffer ImageBuffer(pointer(0))
Rect 0,0,3,10

For i=1 To 89
   pointer(i) = CopyImage(pointer(0))
   RotateImage pointer(i),-i*4
Next
;//

SetBuffer BackBuffer()

;//Startposition des Verfolgers
x# = MouseX()
y# = MouseY()
;//

Repeat
   Cls
   
   ;//Mausposition
   mx = MouseX()
   my = MouseY()
   ;//
   
   ;//Winkel w#, Abstand s#, Geschwindigkeit v# (abhängig von s#)
   w# = (ATan2(mx-x,my-y)+360) Mod 360
   s# = Sqr((mx-x)^2+(my-y)^2)
   v# = s# / 20
   ;//
   
   ;//Position Aktualisieren
   x# = x# - sin(360-w#) * v#
   y# = y# + cos(360-w#) * v#
   ;//
   
   ;//Abstufung der Darstellung in 4 Grad schritten
   w2# = Ceil(w#/4) Mod 90
   ;//
   
   ;//Darstellen
   DrawImage pointer(w2),x#,y#
   Rect mx-1,my-1,2,2
   Text 0,0,s
   Flip
   ;//
Until KeyHit(1)
End
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Farami

BeitragDo, Feb 09, 2006 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie du bereits gesagt hast leider nicht das Codeschnipsel was ich meinte.
Soweit ich mich recht erinnere war das nicht mit CreateImage/ImageBuffer/RotateImage sondern wurde direkt gezeichnet.

Spikespine

BeitragDo, Feb 09, 2006 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist kein Problem, das kann man einfach mit Sin() und Cos() machen.

Code: [AUSKLAPPEN]
;Mauszeigerverfolgung
;2005 by Spikespine

Graphics 800,600,32,2
SeedRnd MilliSecs()
HidePointer

SetBuffer BackBuffer()

;//Startposition des Verfolgers
x# = MouseX()
y# = MouseY()
;//

Repeat
   Cls
   
   ;//Mausposition
   mx = MouseX()
   my = MouseY()
   ;//
   
   ;//Winkel w#, Abstand s#, Geschwindigkeit v# (abhängig von s#)
   w# = (ATan2(mx-x,my-y)+360) Mod 360
   s# = Sqr((mx-x)^2+(my-y)^2)
   v# = s# / 20
   ;//
   
   ;//Position Aktualisieren
   x# = x# - sin(360-w#) * v#
   y# = y# + cos(360-w#) * v#

   ;//
   
   ;//Darstellen
   Oval x#-10,y#-10,20,20,0
   Line x#,y#,x#-sin(360-w#) * 40,y#+cos(360-w#) * 40
   
   Rect mx-1,my-1,2,2
   Text 0,0,s
   Flip
   ;//
Until KeyHit(1)
End
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

tyty

BeitragDo, Feb 09, 2006 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das "Gummiband"?
-> Forumsuche
User posted image

Kaikille suomea puhuville ihmisille: tyty = tyty the technical youngster!!!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Feb 10, 2006 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht möchte Farami ja kein Gummibandeffeckt und ausserdem meinte er ja das er nichts gefunden hatte. Also kopiere ich nochmal hier den Code rein. Vielleicht ist es ja dieser denn er sucht...Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

mx%=0        ;Maus-X-Position
my%=0        ;Maus-Y-Position
xp#=100      ;Gegner-X-Position
yp#=100      ;Gegner-Y-Position
rw#=90       ;Gegner-Ist-Rotationswinkel
rr#=0        ;Gegner-Soll-Rotationswinkel




While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 rr=ATan2(my-yp,mx-xp)
 rw=rw+Sgn(Sin(rr-rw))*1

 If Sqr((mx-xp)^2+(my-yp)^2)>40 Then
  xp=xp+Cos(rw)/2
  yp=yp+Sin(rw)/2
 End If

 Color 255,0,0
 Line xp,yp,xp+Cos(rw)*10,yp+Sin(rw)*10
 Color 255,255,255
 Rect mx-4,my-4,9,9,0
 Oval xp-4,yp-4,9,9,0

 Flip
 Cls
Wend
End
 

Farami

BeitragFr, Feb 10, 2006 3:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
Vielleicht möchte Farami ja kein Gummibandeffeckt und ausserdem meinte er ja das er nichts gefunden hatte. Also kopiere ich nochmal hier den Code rein. Vielleicht ist es ja dieser denn er sucht...Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

mx%=0        ;Maus-X-Position
my%=0        ;Maus-Y-Position
xp#=100      ;Gegner-X-Position
yp#=100      ;Gegner-Y-Position
rw#=90       ;Gegner-Ist-Rotationswinkel
rr#=0        ;Gegner-Soll-Rotationswinkel




While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 rr=ATan2(my-yp,mx-xp)
 rw=rw+Sgn(Sin(rr-rw))*1

 If Sqr((mx-xp)^2+(my-yp)^2)>40 Then
  xp=xp+Cos(rw)/2
  yp=yp+Sin(rw)/2
 End If

 Color 255,0,0
 Line xp,yp,xp+Cos(rw)*10,yp+Sin(rw)*10
 Color 255,255,255
 Rect mx-4,my-4,9,9,0
 Oval xp-4,yp-4,9,9,0

 Flip
 Cls
Wend
End


Bingo! Das isses! Vielen vielen Dank! Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group