Tan/ATan
Verfasst: 13.06.2009 16:20
Also, mein Problem ist dass ich mit dem Tan und dem ATan nicht zurechtkomme. Anscheinend bekomme ich den Tan als Bogenneinheit (so weit so gut), aber wie rechne ich einen Tan in Bogenneinheit wieder so um dass ich ihn in ATan einsetzen kann, wieder umrechne und den Winkel bekomme (den brauche ich nämlich). Ich wäre froh wenn ihr mir helfen könntet
.
Das ist ein Problem, ich will das Teil in ein (aufgemotztes) PingPong-Spiel einbauen, und durch Zufall erscheint eine Kanone und schießt den Ball zurück (dafür bräuchte ich den Winkel dann). Leider wird die Kanone nichtmal falschrum angezeigt...
Hiermal der Code- Es ist erst mein 2. Programm, also habt bitte Nachsicht
Die Zufälligkeit hab ich extra so hoch, weil ich das ja testen will.
Code-Tags ergänzt - Andesdaf

Das ist ein Problem, ich will das Teil in ein (aufgemotztes) PingPong-Spiel einbauen, und durch Zufall erscheint eine Kanone und schießt den Ball zurück (dafür bräuchte ich den Winkel dann). Leider wird die Kanone nichtmal falschrum angezeigt...
Hiermal der Code- Es ist erst mein 2. Programm, also habt bitte Nachsicht

Code: Alles auswählen
MP = MessageRequester("WasDuWolle?", "2-Spieler", #PB_MessageRequester_YesNo)
MP = MP - 5
If MP = 1
MessageRequester("Achtung:", "Steuerung Spieler 2: Keypad 8 & 2", 0)
EndIf
If InitSprite() = 0
MessageRequester("!", "Fehler beim Sprite-Initialisieren^^", 0)
End
EndIf
If OpenScreen(640, 480, 16, "Paddle") = 0
MessageRequester("!", "Fehler beim Screen-Loaden^^", 0)
End
EndIf
Speed = 5
CatchSprite(0, ?Paddle)
CatchSprite(1, ?Ball)
CatchSprite(2, ?Kanone,#PB_Sprite_Texture)
InitSprite3D()
CreateSprite3D(0,2)
Global Start, x_ball, y_ball, Waagerecht_Ball, Paddle_1 , Paddle_2, ShowPaddle1, ShowPaddle2, ShowGun, Winkel, Gun_x, Gun_Y, Quadrat
ShowPaddle2=1
ShowPaddle1=1
x_Ball = 30
y_Ball = 10
Waagerecht_Ball = 1
Senkrecht_Ball = 1
Paddle_1 = 200
Paddle_2 = 200
If InitSound() = 0
MessageRequester("!!!", "Der Sound konnte nicht geladen werden! Was soll denn das???", 0)
End
EndIf
CatchSound(0, ?Sound)
If InitKeyboard() = 0
MessageRequester("!", "Fehler beim Keyboard-Initialisieren^^", 0)
End
EndIf
Procedure Kanone(Bob)
Starta:
End=0
Repeat
Delay(50)
Until Start=1
If Waagerecht_Ball=1
ShowPaddle2=0
Gun_x=620
Else
ShowPaddle1=0
Gun_x=1
EndIf
Repeat
If Waagerecht_Ball=1
If y_Ball>paddle_2
quadrat=4
Else
quadrat=3
EndIf
Else
If y_Ball>paddle_1
quadrat=2
Else
quadrat=1
EndIf
EndIf
If Waagerecht_Ball=1
Gun_y=Paddle_2
GK=(Sqr(y_ball-paddle_2))²
AK=(Sqr(x_ball-625))²
Else
Gun_y=Paddle_1
GK=(Sqr(y_ball-paddle_1))²
AK=(Sqr(x_ball-1))²
EndIf
Winkel=ATan(GK/AK)
If Showgun=0
ShowGun=1
EndIf
End=End+1
Delay(60)
Until End=200
Start=0
ShowGun=0
ShowPaddle1=1
ShowPaddle2=1
Waagerecht_Ball*-1=Waagerecht_Ball
Goto Starta
EndProcedure
CreateThread(@Kanone(), 0)
Repeat
Delay(60)
x_Ball = x_Ball + (Waagerecht_Ball * Speed)
y_Ball = y_Ball + Senkrecht_Ball
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up) And Paddle_1 > 1
Paddle_1 = Paddle_1 - 10
EndIf
If KeyboardPushed(#PB_Key_Down) And Paddle_1 < 430
Paddle_1 = Paddle_1 + 10
EndIf
If y_Ball < 2 Or y_Ball > 449
Senkrecht_Ball = Senkrecht_Ball - (2 * Senkrecht_Ball)
EndIf
ClearScreen(0,0,0)
If ShowPaddle1=1
DisplaySprite(0, 1, Paddle_1)
EndIf
If ShowPaddle2=1
DisplaySprite(0, 625, Paddle_2)
EndIf
DisplaySprite(1, x_Ball, y_Ball)
If ShowGun=1
Start3D()
RotateSprite3D(0, (360-quadrat*90+Winkel),0)
DisplaySprite3D(0, Gun_x,Gun_y)
Stop3D()
EndIf
FlipBuffers()
If MP = 2
If Waagerecht_Ball = 1
If Paddle_2+20 > y_Ball
Paddle_2 = Paddle_2 - 3
EndIf
If Paddle_2+20 < y_Ball
Paddle_2 = Paddle_2 + 3
EndIf
EndIf
EndIf
If Mp = 1
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Pad8) And Paddle_2 > 1
Paddle_2 = Paddle_2 - 10
EndIf
If KeyboardPushed(#PB_Key_Pad2) And Paddle_2 < 430
Paddle_2 = Paddle_2 + 10
EndIf
EndIf
If x_Ball < 21
If Paddle_1 + 49 > y_Ball And Paddle_1 < y_Ball + 20
Waagerecht_Ball = Waagerecht_Ball - (2 * Waagerecht_Ball)
Speed = Speed + 1
PlaySound(0)
If MP = 2
HS = HS + 100
EndIf
Else
CloseScreen()
If MP = 2
MessageRequester("=(", "Verloren... "+Str(HS)+" Punkte", 0)
Else
MessageRequester("={", "Spieler 2 gewinnt!!!!!", 0)
EndIf
End
EndIf
EndIf
If x_Ball > 600
If Paddle_2 + 49 > y_Ball And Paddle_2 < y_Ball+20
Waagerecht_Ball = Waagerecht_Ball - (2 * Waagerecht_Ball)
Speed = Speed + 1
PlaySound(0)
Else
CloseScreen()
If Mp = 2
MessageRequester(":)", "Gewonnen!!!... "+Str(HS)+" Punkte", 0)
Else
MessageRequester(":{", "Spieler 1 gewinnt!!!!!", 0)
EndIf
End
EndIf
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
CloseScreen()
MessageRequester("Ciaobella^^", "Auf Wiedersehen geehrter Spieler!", 0)
End
EndIf
If KeyboardPushed(#PB_key_Add)
Speed = Speed +1
EndIf
If KeyboardPushed(#PB_Key_PadEnter)
Senkrecht_Ball+1
EndIf
If KeyboardPushed(#PB_Key_C)
MessageRequester("Hallöle", "C) David F^^ Cool wa?", 0)
EndIf
If Int(Random(300))>50 And Start=0
If Waagerecht_Ball=1 And x_Ball<400 And Speed<15 Or Waagerecht_Ball=-1 And x_Ball>150 And Speed<15
Start=1
EndIf
EndIf
ForEver
Paddle:
IncludeBinary "paddle.bmp"
Ball:
IncludeBinary "ball.bmp"
Sound:
IncludeBinary "chop.wav"
Kanone:
IncludeBinary "gun.bmp"
Die Zufälligkeit hab ich extra so hoch, weil ich das ja testen will.
Code-Tags ergänzt - Andesdaf