Turmdrehung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Randall Flagg

Betreff: Turmdrehung

BeitragSo, Feb 13, 2005 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bastel grad an einem Strategiespiel á la "Z".
Aber ich will auch Abwehrtürme einbauen.
Wie kann ich das machen, das sich ein Turm automatisch zum Gegner dreht?
Für die, die nen Code haben wolln:
Bisher ist noch keiner vorhanden, ist bisher alles auf Papier (Zeichungen und so'n Zeug).
Meine Parodien & Geschichten

simi

BeitragSo, Feb 13, 2005 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, das machst du am Besten mit ATan2....

Musst suchen, findest sicher ein gutes Beispiel....

[edit]
Noch ein kleiner Codeschnipsel...:
Code: [AUSKLAPPEN]

Graphics 640,480,32,2
Global x#,y#
SetBuffer BackBuffer()
While Not(KeyHit(1))
   Oval 200,200,200,200,0
   mx=MouseX()
   my=MouseY()
   mix=300-mx
   miy=300-my
   winkel = ATan2(miy,mix)
   x=300-Cos(winkel)*100
   y=300-Sin(winkel)*100
   Oval x-5,y-5,10,10,1
   Text 10,10,winkel
   Flip
   Cls
Wend
End

[/edit]
  • Zuletzt bearbeitet von simi am So, Feb 13, 2005 13:09, insgesamt einmal bearbeitet

Randall Flagg

BeitragSo, Feb 13, 2005 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist denn Atan 2?
Meine Parodien & Geschichten

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Feb 13, 2005 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
das hatten wir doch erst vor kurzem!
Code: [AUSKLAPPEN]
Graphics 800 ,600,16,2
SetBuffer BackBuffer ()
Dim Panzer (360)
;PanzerGrafik_berechnen > 360 Einzelbilder <
Rect 9 ,0,2,20
Rect 0 ,10,20,20,1
Flip
Panzer (0) = CreateImage (20 ,30)
GrabImage Panzer (0) ,0,0
MidHandle Panzer (0)

For z = 1 To 359
    panzer (z) = CopyImage (Panzer (0) )
    RotateImage panzer (z) ,z
    Text 500 ,500," Berechne Panzer : " + z
    If z Mod 10 = 0 Then Flip
    Cls
Next

x = 400 : y = 30 ; damit der zielpunkt zu sehen ist

Repeat
    If MouseDown (1) Then
        x = MouseX ()
        Y = MouseY ()   ;Winkel bezieht sich auf den Panzer
        winkel = Objekt_richtung_grad (x,y ,400 ,300)
    End If
    posPanzer = (posPanzer + drehAufZiel (pospanzer,winkel) + 360) Mod 360
    Oval x - 5 ,y - 5 ,10,10,1 ;Klickpunkt malen
    DrawBlock Panzer (posPanzer) ,400,300;Panzer malen
    Text 100 ,30, posPanzer + " Panzer"
    Text 100 ,60, winkel +   " Grad"
    Flip
    Cls
Until KeyHit (1)

End

Function Objekt_richtung_grad (Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y )
    grad = ATan2 (Zielpunkt_Y - Ausgangspunkt_Y, Zielpunkt_X - Ausgangspunkt_X) + 90
    grad = (grad + 360) Mod 360
    Return grad
End Function

Function drehAufZiel (pospanzer,winkel)
    If posPanzer > Winkel Then
        If posPanzer - 180 < Winkel Then Return - 1
     Else
        If posPanzer + 180 < Winkel Then Return - 1
    End If
    Return 1
End Function
[BB2D | BB3D | BB+]

Randall Flagg

BeitragSo, Feb 13, 2005 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie blicke ich da vol nicht durch.
Ich glaub ich schau mal im Netz nach n paar Tuts.
Trotzdem danke.
Meine Parodien & Geschichten

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group