Forum Le CBNA
Le Forum du CBNA a pour but de vous aider dans l'utilisation de GameMaker. Premier forum Francophone sous GameMaker, vous trouverez des .gmd, .gm6, .gmk, scripts, logiciels et d'autres ressources sur Le CBNA.
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S’enregistrerS’enregistrer  ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujet
 

Surface_free et créer un sprite [Résolu]

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Malax
Utilisateur confirmé: Rang **



Age : 25
Inscrit le : 21 Aoû 2006
Messages : 356
Localisation : Brignoles
 : ────────── :
Projet Actuel : Lemmings Struggle
Avancement : 
60/10060/10060/10060/100 (60/100)

MessageSujet: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 16:49

Bonjour à tous

A l'aide d'une surface, je crée un sprite qui représente une corde puis je libère la mémoire avec surface_free, dans le but de créer un sprite d'une corde et de l'attribuer dans un objet. Selon la puissance de l'ordi, j'ai l'impression qu' il bug, personnellement sur le mien je n'ai pas atteint de limite mais sur celui de mon frére il fait bugger le jeu après la 10eme corde créé.

Nous pensons que c'est à cause de surface_free ... Quelqu'un sait si il existe une amélioration pour le traitemment des surfaces ou bien, est ce que quelqu'un aurait une autre idée pour créer le sprite d'une corde. J'écris le code a partir de la création de la surface,bien que ca n'a aucun intérêt. (id4 est l'objet corde)

Code:

with (id4)
    {
    surf_tmp2=surface_create(600,600) ;
    surface_set_target(surf_tmp2) ;
    draw_set_color(c_white);
    draw_rectangle(0,0,600,600,0) ;
    draw_set_color(c_green) ;
    draw_line(300,299,300+other.x-other.xg,299+other.y-other.yg) ;
    draw_line(300,298,300+other.x-other.xg,298+other.y-other.yg) ;
    spr = sprite_create_from_surface(surf_tmp2,0,0,600,600,1,1,0,1,0,0) ;
    surface_reset_target() ;
    sprite_index=spr ;
    draw_set_color(c_white);
    surface_free(surf_tmp2) ;
    }


Je mets également en ligne un exe, ou d'ailleurs le bug fonctionne aussi...
http://www.zshare.net/info.html?13049222-c36b2af3e20587c26b82152ee4f84b7f

Voilà merci pour ce beta test, si vous pouviez aussi écrire le nombre de cordes que vous avez pu tirer et la mémoire de votre CG merci d'avance... Comme c'est une version "beta beta" il n'y a que deux options activés, Gp pour grappin et Cr pour creuser.


Dernière édition par Malax le Mar 3 Juin - 19:39, édité 1 fois
Revenir en haut Aller en bas
nicoulas
Utilisateur confirmé: Rang *****



Age : 15
Inscrit le : 16 Juin 2007
Messages : 2246
Localisation : ...
 : ────────── :
Projet Actuel : Skywar 3
Avancement : 
75/10075/10075/10075/100 (75/100)

MessageSujet: Re: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 17:22

Bon j'ai testé (ma CG a 64 mo de Vram) et au bout d'une trentaine ou quarantaine de lignes, ça rame pour en créer d'autres et ça génère un bug à la surface du terrain :


_________________
Revenir en haut Aller en bas
Malax
Utilisateur confirmé: Rang **



Age : 25
Inscrit le : 21 Aoû 2006
Messages : 356
Localisation : Brignoles
 : ────────── :
Projet Actuel : Lemmings Struggle
Avancement : 
60/10060/10060/10060/100 (60/100)

MessageSujet: Re: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 17:45

Ok merci du renseignement et de ta participation. J'aimerais absolumment adapter au mieux possible mais je vois pas l'erreur dans le code.
Revenir en haut Aller en bas
M@d_Doc
Modérateur 'Programmation'



Age : 18
Inscrit le : 12 Fév 2005
Messages : 4058
Localisation : 47°44'8.04
 : ────────── :
Projet Actuel : trouver un contrat
Avancement : 
100/100100/100100/100 (100/100)

MessageSujet: Re: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 17:53

fait peut être le sprite_create_from_surface APRES le reset_target, c'est plus propre ^^
Et là, un nouveau sprite est crée à chaque step....
rajoute au début de ton code :
if sprite_exists(spr)
sprite_delete(spr)

Sinon, t'as un nouveau sprite de créer à chaque step/// ça devient vite lourd ^^
_________________
Click for a free cookie
Revenir en haut Aller en bas
Malax
Utilisateur confirmé: Rang **



Age : 25
Inscrit le : 21 Aoû 2006
Messages : 356
Localisation : Brignoles
 : ────────── :
Projet Actuel : Lemmings Struggle
Avancement : 
60/10060/10060/10060/100 (60/100)

MessageSujet: Re: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 18:38

le problème de sprite_delete c'est quand je l'écris (ou il faut lng ) et même avec une alarme qu'il le supprime dans deux steps, il me vire l'image du sprite. Je pense que ca vient du fait qu'il est définit comme ça ... Enfin je sais pas trop mais c'est bizarre. Sinon faudrait que tu m'expliques. Bon je vais essayer ton conseil et je vais aussi essayer de créer les lignes directemment sur l'écran puis de les effacer, comme ça pas de surface à utiliser.

Seulemment en réfléchissant, je ne sais toujous pas si le problème serait à cause des surfaces ou bien du trop grand nombre de sprites créés pendant le jeu ...
Revenir en haut Aller en bas
Malax
Utilisateur confirmé: Rang **



Age : 25
Inscrit le : 21 Aoû 2006
Messages : 356
Localisation : Brignoles
 : ────────── :
Projet Actuel : Lemmings Struggle
Avancement : 
60/10060/10060/10060/100 (60/100)

MessageSujet: Re: Surface_free et créer un sprite [Résolu]   Mar 3 Juin - 19:38

Ben je suis passé sans les surfaces et ça marche. Le code est plus simple... donc voilà Résolu mais merci d'avoir Test

Edit:
Code:

id3=instance_create(xg,yg,obj_grappin) ;
if x<xg{xm=x ;}else{xm=xg ;}
if y<yg{ym=y ;}else{ym=yg ;}
id4=instance_create(xm,ym,obj_corde);
draw_set_color(c_white);
draw_rectangle(view_xview[0],view_yview[0],view_xview[0]+800,view_yview[0]+600,0) ;
draw_set_color(c_green) ;
draw_line(x,y,xg,yg) ;
draw_line(x,y+1,xg,yg+1) ;
spr = sprite_create_from_screen(xm,ym,abs(x-xg),abs(y-yg),1,1,0,1,0,0) ;
id4.sprite_index=spr ;
draw_set_color(c_white);
Revenir en haut Aller en bas

Surface_free et créer un sprite [Résolu]

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous pouvez répondre aux sujets dans ce forum
Forum Le CBNA :: Programmation :: Aide confirmés-
Poster un nouveau sujet   Répondre au sujet