pour repondre a la question , je trouve que c'est utile car c'est plus jolie
souvent je regarde les code avant de le recuperer , cela permet, d'avoir une meilleur visibilité (j'y travail !

)
pour les couleur , je suis bien d'accord , aussi comme personne n'a le meme theme , on finira bien par trouver des couleurs intermediaire
qui passeron partout !
c'est pourquoi j'ai tpujours besoin de votre avis !
j'ai completement refait mon code , du coup plein de bleme en moins !
je peux choisir les couleurs directement avec le selecteur de couleur du purebasic , ce qui permet une plus grande manoeuvre !
mais je ne laisserai pas cette possibilité a l'usagé , car dans un forum a plusieurs theme , ça risque d'etre fouilli !
je compte sur vous pour m'aider a trouver des couleur plaisante pour tout vos theme , ça doit bien etre possible non ?
PS : cette version n'est pas encore telechargeable !
voici un exemple :
; prg realisé par Dobro
#dobro=1
#Police=1
#Sprite=1
Declare.s super_collision(sprite_numero1, x_sprite1, y_sprite1, sprite_numero2, x_sprite2, y_sprite2)
; cette procedure renvoie du quelle coté le sprite a été touché !
; sprite_numero1= le numero du sprite 1 a tester
; largeur_spr1 = largeur en pixel du sprite numero 1
; hauteur_spr1 = hauteur en pixel du sprite numero 1
; x_sprite1 = coordonée X du sprite numero 1
; y_sprite1=coordonée Y du sprite numero 1
; --------------------------------------------------------------------------
; sprite_numero2= le numero du sprite 2 a tester
; largeur_spr2 = largeur en pixel du sprite numero 2
; hauteur_spr12 = hauteur en pixel du sprite numero 2
; x_sprite2 = coordonée X du sprite numero 2
; y_sprite2 coordonée Y du sprite numero 2
Enumeration
#sprite_cible
#sprite_souris
#sprite_text
EndEnumeration
Structure sprite
x.w
y.w
EndStructure
Dim sprite.sprite(1)
Dim ecran(640,400)
For x = 0 To 640 ; un écran de couleurs aléatoires
For y = 0 To 400
r= Random (255)
g= Random (255)
b= Random (255)
c= RGB (r,g,b)
ecran(x,y)= c
Next y
Next x
; ***********************************
Resultat = InitSprite ()
;FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
;EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
;EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
;WindowID = OpenWindow(1, 0, 0, 800, 600, #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "hello")
WindowID = WindowID (1)
Result = OpenWindowedScreen (WindowID,0,0, 800, 600, 1, 0,0)
CreateSprite ( #sprite_cible , 128, 64) ; sprite exemple
StartDrawing ( SpriteOutput ( #sprite_cible ) ) ; on dessine dedans
Box (0, 0, 128, 64, RGB ($FF,$0,$80))
StopDrawing ()
CreateSprite ( #sprite_souris , 32, 32) ; sprite souris
StartDrawing ( SpriteOutput ( #sprite_souris ) ) ; on dessine dedans
;Box(0, 0, 64, 64,RGB($13,$F8,$7))
Circle (16, 16, 16, RGB ($13,$F8,$7))
StopDrawing ()
bord$=" aucun bord "
CreateSprite ( #sprite_text , 150,14) ; le text
StartDrawing ( SpriteOutput ( #sprite_text ) ) ; on dessine dedans
DrawText (bord$)
StopDrawing ()
Resultat = InitMouse ()
Repeat
ExamineMouse ()
Event= WindowEvent ()
DisplaySprite ( #sprite_cible , WindowWidth () /2, WindowHeight ()/2)
sprite(1)\x= WindowWidth ()/2
sprite(1)\y= WindowHeight ()/2
DisplaySprite ( #sprite_souris , MouseX (), MouseY ())
DisplaySprite ( #sprite_text , 10, 10)
bord$=super_collision( #sprite_cible , sprite(1)\x,sprite(1)\y, #sprite_souris , MouseX (), MouseY ())
StartDrawing ( SpriteOutput ( #sprite_text ) ) ; on dessine dedans
DrawingMode (0)
DrawText (bord$)
DrawText (" ")
StopDrawing ()
If MouseButton (2)
End
Endif
FlipBuffers ():; affiche l'ecran
ClearScreen (0, 0, 0) :;efface l'ecran
Until Event=#PB_Event_CloseWindow
Procedure super_collision(sprite_numero1, x_sprite1, y_sprite1, sprite_numero2, x_sprite2, y_sprite2)
spr1_milieu_x=x_sprite1+ SpriteWidth (sprite_numero1) /2
spr1_milieu_y=y_sprite1+ SpriteHeight (sprite_numero1)/2
spr2_milieu_x=x_sprite2+ SpriteWidth (sprite_numero2)/2
spr2_milieu_y=y_sprite2+ SpriteHeight (sprite_numero2)/2
spr1_hauteur= SpriteHeight (sprite_numero1)
spr1_largeur= SpriteWidth (sprite_numero1)
spr2_hauteur= SpriteHeight (sprite_numero2)
spr2_largeur= SpriteWidth (sprite_numero2)
bord$=""
If SpriteCollision (sprite_numero1,x_sprite1, y_sprite1,sprite_numero2,x_sprite2, y_sprite2)
If bord$<>""
Goto dobrosuite
Endif
If (spr2_milieu_x)>x_sprite1 And (spr2_milieu_x)<(x_sprite1+spr1_largeur) And (spr2_milieu_y)>(y_sprite1+spr1_hauteur )
bord$=" bas "
Goto dobrosuite
Endif
If (spr2_milieu_x)>x_sprite1 And (spr2_milieu_x)<(x_sprite1+spr1_largeur) And (spr2_milieu_y)<y_sprite1
bord$=" haut "
Goto dobrosuite
Endif
If (spr2_milieu_y)>y_sprite1 And (spr2_milieu_y)<(y_sprite1+spr1_hauteur) And (spr2_milieu_x)>(x_sprite1+spr1_largeur)
bord$=" droit "
Goto dobrosuite
Endif
If (spr2_milieu_y)>y_sprite1 And (spr2_milieu_y)<(y_sprite1+spr1_hauteur) And (spr2_milieu_x)<x_sprite1
bord$=" gauche "
Goto dobrosuite
Endif
If (spr2_milieu_x)<x_sprite1 And (spr2_milieu_y)<y_sprite1
bord$=" haut-gauche "
Endif
If (spr2_milieu_x)>x_sprite1+spr1_largeur And (spr2_milieu_y)<y_sprite1
bord$=" haut-droit "
Endif
If (spr2_milieu_y)>y_sprite1+spr1_hauteur And (spr2_milieu_x)<x_sprite1
bord$=" bas-gauche "
Endif
If (spr2_milieu_y)>y_sprite1+spr1_hauteur And (spr2_milieu_x)>x_sprite1+spr1_largeur
bord$=" bas-droit "
Endif
Endif
dobrosuite:
ProcedureReturn bord$
EndProcedure