Sélection d'un sprite avec la souris
Sélection d'un sprite avec la souris
Bonjour,
Une petite question, j'aimerais savoir sur quel sprite j'ai cliqué.... Comment dois-je faire ?
Faire une bidouille avec SpritePixelCollision ?
J'affiche mes sprites en question avec DisplayTransparentSprite. Je ne peux donc pas faire un test des coordonnées de la souris car les pixels au bord de mes sprites sont transparents...
Merci pour votre aide car là je sèche un peu...
Une petite question, j'aimerais savoir sur quel sprite j'ai cliqué.... Comment dois-je faire ?
Faire une bidouille avec SpritePixelCollision ?
J'affiche mes sprites en question avec DisplayTransparentSprite. Je ne peux donc pas faire un test des coordonnées de la souris car les pixels au bord de mes sprites sont transparents...
Merci pour votre aide car là je sèche un peu...
Quelques manoucheries : I can't give you anything but love / Stompin' at decca
Re: Sélection d'un sprite avec la souris
tu connais la position de tes sprites donc tu peux tester les coordonnes de la souris et du sprite pour voir si la souris est dans le sprite si tu veux un truc plus precis tu peux definir des hitbox sur le sprite et tester si la souris est dedans.
Re: Sélection d'un sprite avec la souris
Hello BomSeb,
[Edit] Un truc du genre
Si tu as 5 sprites, tu les déclares de 1 à 5.
[Edit] Un truc du genre
Si tu as 5 sprites, tu les déclares de 1 à 5.
Code : Tout sélectionner
InitSprite()
InitMouse()
InitKeyboard()
;----- Ouvre un Screen Plein écran
ExamineDesktops()
ScreenWidth=DesktopWidth(0)
ScreenHeight=DesktopHeight(0)
OpenScreen(ScreenWidth, ScreenHeight, 32, "")
;-- creation du sprite n°1 de la souris
CreateSprite(1,10,10,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(1))
Circle(5,5,5,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(1,RGB(0,0,0))
;-- creation de 4 sprites à tester
For j=2 To 5
CreateSprite(j,100,100,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(j))
Circle(50,50,50,RGB(255,0,0))
StopDrawing()
TransparentSpriteColor(j,RGB(0,0,0))
Next
Global Dim SpriteX(5), Dim SpriteY(5)
For j=2 To 5
SpriteX(j)=Random(500)
SpriteY(j)=Random(500)
Next
;-- Boucle principale
Repeat
ExamineKeyboard()
ExamineMouse()
ClearScreen(RGB(150,150,150))
; test tous les 4 sprites les uns après les autres, sachant que le sprite n°1 est la souris
For j=2 To 5
If SpritePixelCollision(1,MouseX(),MouseY(),j,SpriteX(j),SpriteY(j)) ; tu test tous les sprites avec celui de la souris tu peux ajouter une condition du clicj gauche ici aussi
; c'est le sprite n°j qui est en contact avec la souris représenté par le sprite n°1
; si contact, change les coordonnées du sprite touché
SpriteX(j)=Random(500)
SpriteY(j)=Random(500)
EndIf
;- Affiche les 4 sprites
DisplayTransparentSprite(j,SpriteX(j),SpriteY(j),255)
Next
;- affiche le sprite de la souris
DisplayTransparentSprite(1,MouseX(),MouseY(),255)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Only PureBasic makes it possible
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Sélection d'un sprite avec la souris
@CoolDji
Ca énerve ton truc
Merci
Ca énerve ton truc

Merci

Re: Sélection d'un sprite avec la souris
Salut KCC,
T'aurait vite fait de rendre cinglé un chat avec un truc comme ça sur une tablette...
T'aurait vite fait de rendre cinglé un chat avec un truc comme ça sur une tablette...

Only PureBasic makes it possible
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Sélection d'un sprite avec la souris
T'as raison...et vite fait d'aller en racheter une autre 
Remarque si t'as un pote qui a un chat qui t’énerve.....allez hop, lance le giciel pose la tablette au bord de la fenêtre et..........

Remarque si t'as un pote qui a un chat qui t’énerve.....allez hop, lance le giciel pose la tablette au bord de la fenêtre et..........

Re: Sélection d'un sprite avec la souris
Je ne comprends pas pourquoi ça ne fonctionne pas sur mon ordi.
Ca me fait une page grise qui se ferme quand je presse la touche Echap, mon sous système est OpenGL.
Ca me fait une page grise qui se ferme quand je presse la touche Echap, mon sous système est OpenGL.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Sélection d'un sprite avec la souris
Cool, merci pour votre aide,
Donc oui soit je teste les coordonnées de la souris, soit je créé un sprite "pointeur de souris" puis je teste les collisions avec les autres sprites...C'est bien ce que je pensais...
Je me disait qu'il y avait peut être plus simple...
Donc oui soit je teste les coordonnées de la souris, soit je créé un sprite "pointeur de souris" puis je teste les collisions avec les autres sprites...C'est bien ce que je pensais...
Je me disait qu'il y avait peut être plus simple...
Quelques manoucheries : I can't give you anything but love / Stompin' at decca
Re: Sélection d'un sprite avec la souris
si tu as des sprites carrés, tu peux "tricher". C'est ce que j'ai fait dans mon jeu de scrabble. Je ne teste aucune collision entre sprites (avec la version officielle)bombseb a écrit :Cool, merci pour votre aide,
Donc oui soit je teste les coordonnées de la souris, soit je créé un sprite "pointeur de souris" puis je teste les collisions avec les autres sprites...C'est bien ce que je pensais...
Je me disait qu'il y avait peut être plus simple...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Sélection d'un sprite avec la souris
De toutes façon y'a pas 36 solutions.
Soit le programme compare les coordonnées de différents sprites et si elles se rencontrent => touché mais ça limite la forme des sprites. ça ça marche bien dans des jeux avec "des cases" (SPH) ou pour faire des GUI graphiques sympas. Mais pour du sprite animé ou ayant des formes, pixelcollision est fait pour ça.
Tu pourrais aussi utiliser un Point(X, Y) et comparer la couleur à celle du fond mais c'est une peu se compliquer la vie pour rien ^^
Soit le programme compare les coordonnées de différents sprites et si elles se rencontrent => touché mais ça limite la forme des sprites. ça ça marche bien dans des jeux avec "des cases" (SPH) ou pour faire des GUI graphiques sympas. Mais pour du sprite animé ou ayant des formes, pixelcollision est fait pour ça.
Tu pourrais aussi utiliser un Point(X, Y) et comparer la couleur à celle du fond mais c'est une peu se compliquer la vie pour rien ^^
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels