Ergebnis 1 bis 15 von 15

Thema: Freebasic - Shooter Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Die Lösung für Delphi sähe folgendermaßen aus:
    Code:
    if (Liniex1 = Liniex2) and (Punktx = Liniex1) then
    if (((liniey1 <= liniey2) and ((liniey1 <= punkty) and (punkty <= liniey2))) or ((liniey1 >= liniey2) and ((liniey2 <= punkty) and (punkty <= liniey1)))) then
    result := true
    else
    result := false
    else
    if (Punkty = Liniey1 + ((Punktx - Liniex1) * (Liniey2 - Liniey1) / (Liniex2 - Liniex1)))
    and (((liniex1 <= liniex2) and ((liniex1 <= punktx) and (punktx <= liniex2))) or ((liniex1 >= liniex2) and ((liniex2 <= punktx) and (punktx <= liniex1))))
    and (((liniey1 <= liniey2) and ((liniey1 <= punkty) and (punkty <= liniey2))) or ((liniey1 >= liniey2) and ((liniey2 <= punkty) and (punkty <= liniey1)))) then
    result := true
    else
    result := false;
    Sicher ist das jetzt viel zu umständlich gedacht, und du musst es auch noch in die Sprache deiner Wahl umschreiben, aber immerhin - es funktioniert. ^^ (Hat zumindest bei zwanzig Tests funktioniert, natürlich kann ich für nichts garantieren...)

  2. #2
    Hm...
    Code:
    Rechnung1=(LinieX1(i)-LinieX2(i))/(LinieY1(i)-LinieY2(i))
    Rechnung2=(LinieX1(i)-PunktX(a))/(LinieY2(i)-PunktY(a))
    
    If Rechnung1=Rechnung2 And ((LinieX1(i)<=PunktX(a)) AND (PunktX(a)<=LinieX2(i))) Then
    Bla
    Geht nicht! xO
    Ich schau mir auch immer schön die Werte an, aber wenn der Punkt exakt auf der Linie ist, sind die Werte trotzdem völlig verschieden (Rechnung1=1.blubb, Rechnung2=0.1blubb).

  3. #3
    Zitat Zitat von Lloyd64 Beitrag anzeigen
    Hm...
    Code:
    Rechnung1=(LinieX1(i)-LinieX2(i))/(LinieY1(i)-LinieY2(i))
    Rechnung2=(LinieX1(i)-PunktX(a))/(LinieY2(i)-PunktY(a))
    Wenn du aus Rechnung2 folgendes machst, sollte es gehen :
    Code:
    Rechnung2=(LinieX1(i)-PunktX(a))/(LinieY1(i)-PunktY(a))

  4. #4
    Du kannst in FB "_" benutzen, um eine Anweisung über mehrere Zeilen zu strecken, z.B. so:

    Code:
    If (LinieX1(i)-LinieX2(i))/(LinieY1(i)-LinieY2(i)) = (LinieX1(i)-PunktX(a))/(LinieY1(i)-PunktY(a)) And _
      ((LinieX1(i)<=PunktX(a)) AND (PunktX(a)<=LinieX2(i)) Then
        ' Kollision
    EndIf
    Bringt mehr Übersichtlichkeit rein.

    mfG Cherry

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •