Billiard problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

rambo256

Betreff: Billiard problem

BeitragMo, Apr 12, 2004 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute ich habe da mal wieder ein Problem Mad
Und zwar:
Ich entwickle nebenbei auch noch ein kleines Billiard-Spiel.
Ich möchte,wenn der Spieler die 1.Maustaste drückt,dann soll sich der kö nachhinten bewegen und wenn nun der Spieler die Maustaste wieder loslässt,dann soll sich der Kö wieder zurück bewegen und die Kugel wegstoßen.
Ich bekomme das alles hin,bis auf eine Kleinigkeit....
Ich möchte,das wenn der Kö den Ball getroffen hat,sich verschwindet und die Laufbahn des Balles nicht mehr beeinflusst. Ich hab schon viel versucht,bin aber immer wieder gescheitert.
Hier ein Codeschnipsel,wo das Problem liegt:

Code: [AUSKLAPPEN]

;-------------------------------------------------------------------
   ;Kö zeichnen
   
   If MouseDown(1) = True Then
      Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
      Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
      Ko_X# = Ko_X#+Ko_Speed_X#
      Ko_Y# = Ko_Y#+Ko_Speed_Y#
      stos = 1
      Else If MouseDown(1) = False And Stos = 1 Then
         Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
         Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
         Ko_X# = Ko_X#-Ko_Speed_X#
         Ko_Y# = Ko_Y#-Ko_Speed_Y#
   EndIf
   If Stos = 0 Or Stos = 1 Then
      Ko_zeichnen(Ko,Ko_X#,Ko_Y#,Ko_Speed_X#,Ko_Speed_Y#,Mouse_X,Mouse_Y,BallW_X#,BallW_Y#,Winkel_Ko_BallW,Mouse_Bt1)
   EndIf

;-------------------------------------------------------------------;
   ;               Ball mit kö            
   ;-------------------------------------------------------------------;
   
   If ImagesCollide(BallW,BallW_X#,BallW_Y#,0,Ko,Ko_X,Ko_Y,0) And stos = 1 Then
      BallW_Speed_X# = -Cos(Winkel_Ko_BallW)
      BallW_Speed_Y# = -Sin(Winkel_Ko_BallW)
      Stos = 2
   EndIf



THX


Uups Embarassed ,vielleicht könnte einer der Mods bitte diesen Thread in Bltz 2D Forum verschieben
Danke!

soli

BeitragMo, Apr 12, 2004 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
übergib Mousedown an eine Variable,
und frag die Taste nicht ab während die Kugel läuft.
solitaire

rambo256

BeitragMo, Apr 12, 2004 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ThX hab das Problem jetzt gelöst,aber habe jetzt ein neues:
Wenn der Kö die Kugel von der linken Seite stoßen will,dann kann ich den Kö nicht zurückziehen,sondern die Kugel schießt schon sofort los...
Aber mit den genauen Winkel,also so,als wenn ich sie angestoßen hätte...
Hier der Code:


Code: [AUSKLAPPEN]
;Kö zeichnen
   
   If MouseDown(1) = True Then
      If stos = 0 Or stos = 1 Or stos = 3 Then
         Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
         Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
         Ko_X# = Ko_X#+Ko_Speed_X#
         Ko_Y# = Ko_Y#+Ko_Speed_Y#
         stos = 1
      EndIf
      Else If MouseDown(1) = False And Stos = 1 Then
         Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
         Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
         Ko_X# = Ko_X#-Ko_Speed_X#
         Ko_Y# = Ko_Y#-Ko_Speed_Y#
   EndIf
   If Stos = 0 Or Stos = 1 Or stos = 3 Then
      Ko_zeichnen(Ko,Ko_X#,Ko_Y#,Ko_Speed_X#,Ko_Speed_Y#,Mouse_X,Mouse_Y,BallW_X#,BallW_Y#,Winkel_Ko_BallW,Mouse_Bt1)
   EndIf

   ;-------------------------------------------------------------------;
   ;               Ball mit kö            
   ;-------------------------------------------------------------------;
   
   If ImagesCollide(BallW,BallW_X#,BallW_Y#,0,Ko,Ko_X,Ko_Y,0) And stos = 1 Then
      BallW_Speed_X# = -Cos(Winkel_Ko_BallW)
      BallW_Speed_Y# = -Sin(Winkel_Ko_BallW)
      Stos = 2
   EndIf
   
   ;-------------------------------------------------------------------
   ;BallW zeichnen
   If stos = 2 Then
      Ball_Speed = Ball_Speed-(Ball_Speed#*0.02)
   EndIf
   If stos = 0 Or stos = 1 Or stos = 2 Then
      BallW_X = BallW_X+(BallW_Speed_X*Ball_Speed)
      BallW_Y = BallW_Y+(BallW_Speed_Y*Ball_Speed)
      BallW_zeichnen(BallW,BallW_X#,BallW_Y#,Winkel_Ko_BallW)
   EndIf

   ;-------------------------------------------------------------------      
   
   ;-------------------------------------------------------------------
   ;         Abfrage: Wenn Ball stehenbleibt,dann neubeginn
   ;-------------------------------------------------------------------
   
   If Ball_Speed <= 0.0001 Then
      Stos = 3
      BallW_X = BallW_X
      BallW_Y = BallW_Y
      Ko_X = BallW_X
      Ko_Y = BallW_Y
      Ball_Speed = 3
   EndIf
[/list][/code]

rambo256

BeitragDi, Apr 13, 2004 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Problem wurde jetzt von mir gelöst,falls es jemadem interressiert Wink hier der Code:

Code: [AUSKLAPPEN]
;-------------------------------------------------------------------
   ;Kö zeichnen
   
   If MouseDown(1) = True Then
      If stos = 0 Or stos = 1 Or stos = 3 Then
         Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
         Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
         Ko_X# = Ko_X#+Ko_Speed_X#
         Ko_Y# = Ko_Y#+Ko_Speed_Y#
         stos = 1
      EndIf
      Else If MouseDown(1) = False And Stos = 1 Then
         Ko_Speed_X# = Cos(Winkel_Ko_Ballw)
         Ko_Speed_Y# = Sin(Winkel_Ko_Ballw)
         Ko_X# = Ko_X#-Ko_Speed_X#
         Ko_Y# = Ko_Y#-Ko_Speed_Y#
   EndIf
   If Stos = 0 Or Stos = 1 Or stos = 3 Then
      Ko_zeichnen(Ko,Ko_X#,Ko_Y#,Ko_Speed_X#,Ko_Speed_Y#,Mouse_X,Mouse_Y,BallW_X#,BallW_Y#,Winkel_Ko_BallW,Mouse_Bt1)
   EndIf
   
   ;-------------------------------------------------------------------

;-------------------------------------------------------------------;
   ;               Ball mit kö            
   ;-------------------------------------------------------------------;
   
   If Ko_X = BallW_X And Ko_Y = BallW_Y And Stos = 1 then   
   BallW_Speed_X# = -Cos(Winkel_Ko_BallW)
      BallW_Speed_Y# = -Sin(Winkel_Ko_BallW)
      Stos = 2
   EndIf
   
   ;-------------------------------------------------------------------
   ;BallW zeichnen
   If stos = 2 Then
      Ball_Speed = Ball_Speed-(Ball_Speed#*0.002)
   EndIf
   If stos = 0 Or stos = 1 Or stos = 2 Or stos = 3 Then
      BallW_X = BallW_X+(BallW_Speed_X*Ball_Speed)
      BallW_Y = BallW_Y+(BallW_Speed_Y*Ball_Speed)
      BallW_zeichnen(BallW,BallW_X#,BallW_Y#,Winkel_Ko_BallW)
   EndIf

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group