[resolu]Faire disparaitre un sprite

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu]Faire disparaitre un sprite

Message par Ar-S »

Dans mon ébauche de casse brique, j'ai maintenant 3 Sprite.
Palette, balle et brique

Pour faire disparaitre la brique, je dis au programme que "si collision de la balle avec la brique", alors la brique se positionne hors de l'écran.
Je trouve ça plutôt barbare même si ça fonctionne.

J'ai vu qu'il y a la commande FreeSprite(#Sprite) mais celle ci vire carément le sprite de la mémoire, il faut donc recharger le sprite à chaque fois qu'on relance une partie ?

Quel moyen employez vous pour faire disparaitre vos sprites ? Ai-je loupé une commande ?
Dernière modification par Ar-S le lun. 25/janv./2010 15:41, modifié 1 fois.
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Faire disparaitre un sprite

Message par Backup »

Ar-S a écrit : Quel moyen employez vous pour faire disparaitre vos sprites ? Ai-je loupé une commande ?

je le met hors de l'ecran !! :lol: :D

c'est la meilleurs solution :)

cela peut meme faire l'objet d'une animation
de voir la brique glisser hors de l'ecran :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Faire disparaitre un sprite

Message par Ar-S »

alors j'ai vu juste ^^
Merci

Ralala mais que ça me fait planer :mrgreen: :mrgreen: :mrgreen:

Image
~~~~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
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Faire disparaitre un sprite

Message par Cool Dji »

Salut Ar-s,

Tu ne l'affiches pas, tout simplement.

Normalement, (Dobro, l'a bien expliqué dans son tutorial), tu fais une boucle principale avec :

Repeat

- calcul les positons
- test les collisions
=> destruction des briques
Chez moi, tous mes sprites peuvent apparaitre ou disparaitre, je ne fais pas de freesprite, je mets une variable à 1 quand ils doivent être actifs et 0 quand ils sont morts ou quand ils sortent de l'écran et ne necessitent pas d'être affichés

- efface ecran
- affiche les decors
- affiche les briques (uniquement celles qui sont à 1)

Until...
Only PureBasic makes it possible
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [resolu]Faire disparaitre un sprite

Message par Backup »

attention dans ce cas , ou tu ne te contente que de ne pas afficher le sprite

les structures elle ont toujours la position qu'avait le sprite !! ( ou qu'a le sprite )

ce qui peux occasionner des collisions fantomes !!

je prefere mettre le sprite hors de l'ecran
pour eviter une collision sur l'aire de jeux !! ;)

mais oui on peut tout axer sur la structure \Vie :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [resolu]Faire disparaitre un sprite

Message par Ar-S »

ah mais bien sûr !
j'ai ajouté brique(1)/vie, ça le fait :D
Merci Cool Dji

---edit----

je viens de voir ta réponse Dobro.
Avec le passage de brique(1)/vie=0 lors de la collision, le sprite disparait bien. Je n'ai pas l'impression que la balle prennent en compte les coord de la brique "fantome" si celle ci a disparu. Elle (la balle) continue bien son chemin
~~~~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
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [resolu]Faire disparaitre un sprite

Message par blendman »

J'utilisais une technique avec GM, je pense que ça doit être applicable avec purebasic :
- d'abord on crée un "objet" (invisible) que j'appelle par exemple bibliotheque et qui ne contient que des variables et des "adresses" comme le loading des images.
- ensuite, je crée un objet "supprime" dont le sprite = le sprite ball de l'objet bibliotheque
- lorsque tu touche une brique, tu supprimes l'objet brique, mais ça ne supprime pas le sprite. De plus, ça permet de ne charger le sprite qu'une seule fois.

Ce doit être transposables avec purebasic, non ?

je vais y réfléchir et si je trouve la solution, je posterai.

Cela dit, la solution de placer le sprite hors de la vue ou de ne pas l'afficher fonctionne aussi ;).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [resolu]Faire disparaitre un sprite

Message par Backup »

hum .. si tu te met au Purebasic , il va te falloir oublier
Game Maker ...

c'est pas du tout le meme principe ....

ce qui tu appel objet invisible , qui contient ls parametres de ton sprite
c'est une Structure en Purebasic ....
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [resolu]Faire disparaitre un sprite

Message par blendman »

Dobro a écrit :hum .. si tu te met au Purebasic , il va te falloir oublier
Game Maker ...

c'est pas du tout le meme principe ....

ce qui tu appel objet invisible , qui contient ls parametres de ton sprite
c'est une Structure en Purebasic ....
oui, tout fait, autant pour moi :).

En fait, je parlais plus de la méthode, mais c'est vrai que les termes portent à confusion, je suis désolé.

Donc, concernant la méthode, je suppose que l'on peut faire ça :
- créer une structure que l'on appelle bibliotheque et qui ne contient que des variables et des "adresses" comme celles des images. Je pense que l'on doit créer un tableau pour accéder à certaines données de la structure bibliotheque ?
- ensuite, je crée une structure "brique" dont le sprite = le sprite ball de la structure bibliotheque. On doit aussi sans doute créer un tableau définissant le nombre de brique (ou peut être une liste) ?
- lorsque l'on "touche" une brique, récupère "l'id" de cette brique (le numéro dans le tableau des briques, peut être) on enlève un élément du tableau (ou on ne l'affiche plus) ou de la liste.

Il faut que je teste pour voir si cette méthode fonctionne ou pas, je n'en suis pas du tout certain :).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: [resolu]Faire disparaitre un sprite

Message par Backup »

Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [resolu]Faire disparaitre un sprite

Message par blendman »

ah oui, merci beaucoup.
Pourtant, j'avais déjà regardé les structures, mais j'avais oublié qu'on n'était pas obligé de créer un tableau pour les utiliser.
Et aussi, grâce à cet excellent tutoriel, je commence à mieux saisir le concept des pointeurs (je l'avais un peu abordé, mais là, je pense que je viens de comprendre comment les utiliser correctement avec les structures :)

Encore merci :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: [resolu]Faire disparaitre un sprite

Message par G-Rom »

un affichage hors de l'écran fait un peu bricolo quand même.
un flag tout simplement :

Code : Tout sélectionner

Structure MonObjet
 SpriteID.i
 PosX.f
 PosY.f
 Angle.f
 Vitesse.f
endstructure

global newlist mesobjet.MonObjet()

Tu n'as plus qu'a parcourir la liste dans une fonction ( pour l'affichage , une autre pour les collisions ), pour arrêter l'affichage & les collisions , tu supprimes simplement l'élément de la liste. ;)
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: [resolu]Faire disparaitre un sprite

Message par SPH »

Je ne sais pas si quelqu'un pense comme moi mais je vais expliquer comment je fais :
Je ne detecte pas la collision avec une instruction specifique. Je regarde ou est la balle et j'analyse mon dim qui contient le numero de la brique. Si 0, pas de brique. Je joue donc a virer les briques dans mon dim et c'est tout.

!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
Répondre