Kollison von Planeten(kreise)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Sephka

Betreff: Kollison von Planeten(kreise)

BeitragDo, Sep 16, 2010 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß das die frage schon x-mal angesproche wurde,aber irgendwie komm ich nicht auf die Lösung.
Ich möchte das der Planet wenn er mit einem anderem kollidiert neu bestimmt wird(seine variablen).
Mein code
Code: [AUSKLAPPEN]
;##################################################################################
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;##################################################################################

;INSTALLATION
 Graphics 1024,768,16,2
  SetBuffer BackBuffer()
  SeedRnd MilliSecs()
 ;GLOBALE VARIABLEN
 Global SternX = 1024/2+Rnd(-20,20)
 Global SternY = 768/2+Rnd(-20,20)
 Global SternR = Rnd(50,100)
 Global px,py,pr,ab#
 ;TYPES
  Type TPlanet
   Field x
   Field y
   Field parent
   Field name$
   Field typ
   Field ID
   Field gr
   Field radius
   Field alpha
   Field speed
  End Type
 ;BILDER

 ;MUSIK
 
 ;FONTS
  Global font = LoadFont("Arial",12)
 ;TIMER
 Global timer = CreateTimer(60)
;##################
For x=1 To 2
.s
planet.tplanet = New tplanet
planet\x = Rnd(1,1024)
planet\y = Rnd(1,768)
planet\typ = x
planet\name = GenerateName(3,8)
planet\ID = x
planet\gr = Rnd(5,50)
planet\radius = Rnd(SternR+20,400)
planet\speed = Rnd(0.51,1)
px = planet\x
py = planet\y
pr = planet\gr
For planet.TPlanet = Each Tplanet

If  Then Goto s
Next
Next
 Repeat
  Drawplanets()
  UpdatePlanets()


  WaitTimer timer
 Flip 0
  Cls
 Until KeyHit(1)
 End

Function DRAWPLANETS()
 For planet.tplanet = Each Tplanet
   Select planet\typ
    Case 1
     Color 255,0,0
    Case 2
     Color 255,255,0
   End Select
    Oval planet\x,planet\y,planet\gr,planet\gr,1
     Color 255,255,255
     SetFont font
    Text planet\x,planet\y-12,planet\name
 Next
Color 255,215,0
Oval sternX,sternY,SternR,SternR,1
End Function

Function UPDATEPLANETS()
 For planet.Tplanet = Each Tplanet
 Planet\x=Sternx+Cos(Planet\alpha)*Planet\radius
 Planet\y=Sterny-Sin(Planet\alpha)*Planet\radius
 Planet\alpha=Planet\alpha+planet\speed
 Next
End Function 

Function GenerateName$(min, max)
   Local name$, char, vowel, length
   vowel = Rand(0, 1)
   length = Rand(min, max)
   For x = 1 To length
      vowel = Not vowel
      If vowel
         Repeat
            char = Rand(95, 122)
         Until (char <> Asc("a")) And (char <> Asc("e")) And (char <> Asc("i")) And (char <> Asc("o")) And (char <> Asc("u"))
      Else
         Select Rand(1, 5)
            Case 1
               char = 97
            Case 2
               char = 101
            Case 3
               char = 105
            Case 4
               char = 111
            Case 5
               char = 117
         End Select
     EndIf
      name = name + Chr(char)
   Next
   name= Replace(name, "q", "qu")
   name= Replace(name, Chr(96), "sch")
   name= Replace(name, Chr(95), "ch")
   name = Upper(Mid(name, 1,1)) + Mid(name,2)
   Return name
End Function

MFG SEPHKA

NightPhoenix

BeitragDo, Sep 16, 2010 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Na ganz einfach: Wenn Distanz Planet 1 + Planet 2 kleiner ist als Radius von Planet 1 + Radius von Planet 2 dann Kollision = true.

Oder was willst du wissen? Du hast dich doch sehr vage ausgedrückt.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group