bon je me suis evertué non pas a résoudre ton probleme
parce que je suis nul en math, toutefois, la petite solution que je te donne devrai te mettre sur la voie
sinon demande a Huibit c'est le Matheux du coin

(il est prof, ça aide

)
bon voici le code, regarde bien les changements apportés, tu verra que le code est bien plus clair ...
du coup on corrige mieux les bêtises
faut cherche a coder proprement des le début, cela résous bien des soucis des le départ !!
;*********les declarations de procedure***********
;*********************************************
; ************** initialisation des constantes *********************
Enumeration
#cible
#balle
EndEnumeration
; ***********************************************************
; ********** initialisation des structure ***************************
Structure boule
xb.w
yb.w
EndStructure
; **********************************************************
; **************** initialisation des tableaux ******************
Dim boule.boule(2)
; *********************************************************
; ********************* les parametres du prg *********************
InitSprite ()
InitKeyboard ()
InitMouse ()
; ************************************************************
; ////////////////////////////////////////////////////////////////////////////////////////////////////
OpenScreen (1024, 768, 32, "squelette ecran" )
; ******************** creation des sprites ***********************************
CreateSprite ( #cible ,100,100)
StartDrawing ( SpriteOutput ( #cible ))
Circle (50, 50, 50, RGB (0,255,0))
StopDrawing ()
CreateSprite ( #balle ,32,32)
StartDrawing ( SpriteOutput ( #balle ))
Circle (16,16,16, RGB (0,0,255))
StopDrawing ()
; *************************************************************************
; ************** parametre du prg avant boucle principale **********************************
m=0 :i=0:tir=0
boule( #cible )\xb=(1024-100)/2 : boule( #cible )\yb=100
diam=600
ang=90: st=1
pas=16
; ************************************************************************************
;xxxxxxxxxxxxxxxxx Boucle principale xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Repeat
ExamineMouse (): ExamineKeyboard ()
; ********************* les touches clavier // souris *****************************
If KeyboardPushed ( #PB_Key_W )
ang=ang-st
EndIf
If KeyboardPushed ( #PB_Key_Q )
ang=ang+st
EndIf
If MouseButton (1)
tir=1
EndIf
If tir=0
mx= MouseX ()
boule( #balle )\xb=mx-16
boule( #balle )\yb=700
EndIf
; ********************************************************************
; ***************** parametrage de l'angle de tir *************************
If ang>=360
ang=358
st=-st
EndIf
If ang<=180
ang=182
st=-st
EndIf
dx=diam* Cos (ang* #PI /180)
dy=diam* Sin (ang* #PI /180)
; *************************************************************************
; ***************** les collisions ****************************************************************
If SpritePixelCollision ( #cible ,boule( #cible )\xb,boule( #cible )\yb+80, #balle ,boule( #balle )\xb,boule( #balle )\yb)
pas=-pas
EndIf
If SpritePixelCollision ( #cible ,boule( #cible )\xb-45,boule( #cible )\yb, #balle ,boule( #balle )\xb,boule( #balle )\yb)
ang=ang-10
EndIf
If SpritePixelCollision ( #cible ,boule( #cible )\xb+55,boule( #cible )\yb, #balle ,boule( #balle )\xb,boule( #balle )\yb)
ang=ang+10
EndIf
If boule( #balle )\yb<0 Or boule( #balle )\yb>736 Or boule( #balle )\xb<0 Or boule( #balle )\xb>992
i=0
tir=0
pas=16
EndIf
; ***********************************************************************************************
; *************** ZONE d'affichage toujour a la fin !! ***************************************
StartDrawing ( ScreenOutput ())
Line (mx,716,dx,dy, RGB (255,0,0))
StopDrawing ()
If tir=1
i=i+1
If i<200
boule( #balle )\xb=boule( #balle )\xb+pas* Cos (ang* #PI /180)
boule( #balle )\yb=boule( #balle )\yb+pas* Sin (ang* #PI /180)
Else
i=0
tir=0
pas=16
EndIf
EndIf
DisplayTransparentSprite ( #cible ,boule( #cible )\xb,boule( #cible )\yb)
DisplayTransparentSprite ( #balle ,boule( #balle )\xb,boule( #balle )\yb)
StartDrawing ( ScreenOutput ())
DrawText (0,0, "Chikun" , RGB (125,90,30), RGB (0,0,0))
DrawText (370,0, "clic droit > sortir ___/___ clic gauche > shooter" , RGB (0,200,100), RGB (0,0,0))
DrawText (369,16, "(A) ang à gauche ___/___ (Z) ang à droite" , RGB (0,200,100), RGB (0,0,0))
DrawText (0,50, " boule()\yb =" + Str (boule( #balle )\yb), RGB (0,200,100), RGB (0,0,0))
StopDrawing ()
FlipBuffers ()
ClearScreen ( RGB (0, 0,0))
Until MouseButton (2)
End