AppTitle "Mouse Angle Example by Eikon 04.26.04" Graphics 640, 480, 16, 2 SeedRnd MilliSecs() img_Ground = CreateImage(640, 80) ; Generate Random Terrain Local tmp_D = Rand(0, 1), tmp_Y# = Rand(60, 40), tmp_CD = Rand(0, 1), tmp_C = Rand(178, 255) SetBuffer ImageBuffer(img_Ground) For i = 0 To 640 Color 0, tmp_C, 0: Line i, tmp_Y, i, tmp_Y + 80 If tmp_CD = 0 Then tmp_C = tmp_C - 1 Else tmp_C = tmp_C + 1 If tmp_D = 0 Then tmp_Y = tmp_Y - .5 Else tmp_Y = tmp_Y + .5 If tmp_Y < 20 And tmp_D = 0 Then tmp_D = 1 ElseIf tmp_Y > 70 And tmp_D = 1 Then tmp_D = 0 If tmp_C < 128 And tmp_CD = 0 Then tmp_CD = 1 ElseIf tmp_C > 254 And tmp_CD = 1 Then tmp_CD = 0 If Rand(1, 10) = 5 Then tmp_D = tmp_D + 1 If tmp_D >= 2 Then tmp_D = 0 Next Type Bullet Field X#, Y#, A#, R# ; X, Y, Angle, Radius End Type Local PX# = 310, PY# = 200, PD = 0 HidePointer SetBuffer BackBuffer() While Not KeyDown(1) Color 255, 255, 0: Oval PX, PY, 10, 10, 1 ; Draw Player If Not ImageRectCollide(img_Ground, 0, 400, 0, PX, PY + 10, 10, 1) Then PY = PY + 1 DrawImage img_Ground, 0, 400 ; Draw Ground ; Draw Bullets For b.Bullet = Each Bullet Color 178, 178, 178: Rect b\R * Cos(b\A) + b\X, b\R * Sin(b\A) + b\Y, 2, 2, 1 b\R = b\R + 3 ; Increase radius If b\R >= 600 Then Delete b ; Delete Next MX# = MouseX(): MY# = MouseY() Angle = ATan2(MY - PY, MX - PX) ; Get Mouse Angle (Credit goes to Antony) If Angle < 0 Angle = Angle + 360 Color 255, 0, 0: Line MX - 3, MY, MX + 3, MY: Line MX, MY - 3, MX, MY + 3 ; Crosshair Color 255, 255, 255 Text 1, 1, "Mouse Angle: " + Angle If KeyDown(203) And PX > 0 Then PX = PX - 1: PD = 0 ; Move Left If KeyDown(205) And PX < 630 Then PX = PX + 1: PD = 1 ; Move Right ; Left/Right slope collision If ImageRectCollide(img_Ground, 0, 400, 0, PX + 10, PY + 8, 2, 2) And PD = 1 Then PY = PY - 1 If ImageRectCollide(img_Ground, 0, 400, 0, PX-2, PY + 8, 2, 2) And PD = 0 Then PY = PY - 1 ; Create Bullet on left click (Might wanna make it mousehit ;) If MouseDown(1) Then b.Bullet = New Bullet: b\X = PX: b\Y = PY: b\A = Angle Flip: Cls Wend: End