[JV]MaxX > je ne connais pas CBS. Pour résumer ça marche comment, c´est une interface graphique ?
As tu déja fait de la prog graphique ? Quel est ton niveau en C/C++ ?
Fvirtman, j´ai bien peur qu´il se s´agisse d´une technologie très au delà de tes compétences et qui fasse appel à cet outils que tu n´a jamais maitrisé qu´est RPG Maker ...
en tout cas, je crois que ce n´est pas le bon topic pour poster ça.
ah ok, en effet, j´abdiques, je n´ai pas les compétances suffisantes pour RPG Maker (j´ai bien essayé une fois RPG Maker 2003, pour voir, et une fois que mon perso se balladait dans la minimap que j´avais fait, j´étais content... j´ai donc désinstallé)
Salut
J´ais commencé le C il y a une semaine et comme il fallait s´y attendre, j´ais (déjà) une question.
Donc en fait j´ais fait une petite appli avec un perso qui se deplace a la souris, le scrolling et un editeur de niveau. C´est justement l´editeur de niveau qui pose probleme, car avant de placer les images, je dois d´abord les charger. Et donc je me retrouve avec a chaque tour de boucle, les images a charger, resultat : la ram qui monte en fleche.
J´ais essayé plusieurs trucs pour ne charger les images qu´au premier passage de la boucle, comme declarer le SDL_Surface* en extern, mais je me retrouve toujours avec le compilo qui gueule ![]()
J´ais aussi essayé d´effacer les images en fin de boucle, mais charger et effacer tout le temps, je me doute que ça ne doit rester qu´une solution provisoire
Donc quelqu´un aurait-il une solution pour ne charger ces images qu´au premier passage de la boucle, sachant que cette solution doit rester dans le void, donc ne peut a priori pas être placée en dehors du while principal.
Merci d´avance
Si tu nous donnais un peu de code ?
mais globablement, c´est bien l´idée que tu as donné. Tu ne charges les images que la premiere fois dans une zone de mémoire global.
Je me demande si tu n´as pas confondu variable globale et le mot clé du C "extern" qui sert a dire qu´une vairable est crée "ailleurs"
Je ne vois pas pourquoi tu ne pourrais pas sortir le chargement du while, bien au contraire, généralement on charge/initialise avant d´entrer dans la boucle.
Sinon, ton problème peut être réglé simplement par une condition. "Si NON surfaceChargée alors Chargement()", surfaceChargée est un pointeur, si celui-ci est égal à NULL, il aura la valeur booléenne faux.
On utilise cette technique orientée objet pour faire des singletons si je ne me trompe pas.
godrik
ah oui effectivement quand je disant extern je parlait du mot clé, donc en debut de code :
extern int blabla;
int blabla;
Donc je vais donc voir mon amis google pour voir ce qu´est une variable globale.
Kaoron
en fait c´est moi qui impose de garder le chargement de l´image a l´interieur du void, parce que l´"objectif" est de faire un editeur de niveau, donc pouvoir rajouter d´autre fichier .cpp contenant juste un void avec le placement des images. Il faut donc que je charge les images en fonction de ce qu´il y a dans le void, d´ou l´obligation de charger en debut de void.
Donc ta solution ressemblera à
if (a==0) SDL_Surface* image = ... ;
a = 1;
si oui, je crois avoir deja essayé, et le compilo avait pas aimé. Je vais retester et donner le message d´erreur.
En tous cas merci a vous deux
Voila j´ais regardé ce qu´étais les variable globales, et donc la seule chose qui m´était inconnue était le nom (connais pas encore le vocabulaire du parfait petit programmeur
). Mais comme je disais j´impose de déclarer le SDL_Surface* dans le void, donc sa ne resoud pas vraiment.
Pour l´erreur du compilo, quand je veux utiliser l´image après son chargement, elle est "undeclared, first use ...", donc il doit pas aimer qu´on déclare quelque chose dans une condition ![]()
Bonjour,
tu peux paster tout ton code sur
http://rafb.net/paste/ stp ?
merci ![]()
-masterlink- > ne dis pas un "void", dis "une fonction"
Cette erreur de vocabulaire me montre une piste
Tu consideres qu´une fonction renvoie toujours void, ce qui est handicapant !
Si tu la faisait renvoyer un SDL_Surface*, peux etre que ça t´aiderait
Visiblement, c´est un probleme de conception de ta part : je ne vois exactement ce que tu veux faire. Tout comme kaoron, je pense qu´il faut charger tes images en dehors d´un while.
Evidemment, si dans ta boucle, tu appelles un fichier sur le disque, alors il faut que ce soit fait que dans un certain cas, protéger par un bon if...
Avant de tirer des conclusions, je dirais aussi comme KeepSmile , wall nous ton code qu´on voit ce que tu veux faire ![]()
voilà, je débute en prog (C, SDL), et j´essaie d´animer un sprite, (1 image, on affiche 1 partie de l´image, puis l´autre), ce qui fait une anime de 2 "images"
d´après tt les tutos ke j´ai regardé, pour animer un sprite c un truc bcp plus compliké :s
j´essaie d´abord un truc à ma maniere, mais ca marche pas lol
voilà le code
http://www.mezimages.com/membres/07/78475-SDL_anim_sprite.jpg
tt doit se passer ds la partie avec les "temps" et le clip[i]
mais l´image change pas ![]()
j´ai oublié de remettre le temps_actuel = temps_prec ; mais bon ca marche tjrs pas
Grayfoxdie > j´ai trouvé !
(la prochaine fois, quand tu wall ton code, ne fait pas un JPEG, mais wall le sur rafb.net)
if (i==0)
{
i==1;
}
else
{
i==0;
}
--> Ce if ne changera JAMAIS la valeur de i. Autant le == est nécessaire dans le if, autant si tu mets un == dans le corps du if, tu ne fais qu´un test dont la valeur de retour n´est pas testé.
i==1;
ou
i==0;
seuls comme ça n´ont aucun effet ![]()
mais bien :
i=1;
et
i=0;
Erreur d´étourderie, je dirais que ça nous arrive tous ![]()
A ouai c´est la même erreur que moi dans mon petit jeu de tir a la lucky luke que j´essaie de faire ne ce moment.
Mais j´en ai d´autre je vous wall le code ce qu´il se passe c´est que mon image n´avance pas
http://rafb.net/p/9Twc8023.html
L´image represente la cible et pour le moment je voudrais juste qu´elle bouge sur l´axe des x peut etre devrais je créer une variable ImageVitX je ne sais pas.
lol pkoi jl´ai pas vu plus tot !! , ca m´aurait éviter de faire mes nombreux tests inutiles avec les timers
et autres
en tt cas merci
ca marche maintenant
N´hésitez pas a utilsier le debuggueur !!
J´avais fait un topic il y a longtemps la dessus :
https://www.jeuxvideo.com/forums/1-31-8416483-1-0-1-0-0.htm
sangohan42 > ça te permettrait rapidement de voir ou sont tes soucis dans Pong -> le debuggueur te montrerait le plantage
Grayfoxdie > avec le debuggueur, tu aurais tres rapidement vu que "i" ne changeait pas de valeur, en breakpoint sur ta ligne de blit et en espionnant la variable i
Par contre, attention : ne travaillez pas en mode plein écran pour debugguer
Avec SDL : désactivez l´option SDL_FULLSCREEN quand vous débugguez ![]()
J´utilise codeblock et apparemment c´est pas tout a fais similaire a dev et visual . Un back-trace s´ouvre mais pas plus je ne sais pas trop quoi faire.
j´ai recu un signal SIGSEGV (segmentation violation?) d´après le debuggueur
http://rafb.net/p/yVglqa85.html
c´est du à quoi? ![]()
C´est normal que tu réutilises deux fois tes variables u et v?