Je n´arrive pas a installer SDL, surtout au niveau de project option. Pour mettre les bin, et autres trucs comme cela, je pense avoir reussi, et je ne sais pas ou mettre SDL.dll .
Je suis sus dev C++.
ok ptival mpais cela n´arrange pas mon probleme
biuss -> La dll mets là dans le dossier où il ya l´exe que tu crées.
( Sinon tu peux la mettre dans Windows/System ( ou je sais plus si c System ou System32...) mais il faut pas oublier de les passer en même temps que tu passes ton exe, et pour ça, c´est plus simple de les caler dans le répertoire du jeu je trouve)
extasy -> Poste ton nouveau code pour voir...
Et n´oubliez pas si qqn peut répondre à ma question :
Qqn a déjà chargé un PNG avec la SDL ?
Je n´arrive pas a coller SDL.dll dans windows system et system 32. Sinon, j´ai mit sdl.dll dans le meme fichier que j´ai enregistré le projet et tjs rien. Pourquoi, cela m´ennui de ne pas pouvoir continuer les cours de JYY...
tu entends quoi par " toujours rien" ?
Il se passe quoi, et quand ?
donc en fait je vais réexpliquer mon probleme:
quand on lance le jeu, je voudrais mettre un bitmap ou il est ecrit " nouvelle partie? ( o=1/n=2)".
et je voudrais que si le joueur appuye sur 1 le jeu se lance, et si il appuye sur 2 le jeu ferme.
j´ai donc mis le code:
void waitkeytitre()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
if ( event.key.keysym.sym == SDLK_1)
{
jeu();
}
if ( event.key.keysym.sym == SDLK_2)
{
return 0;
}}}}};
le probleme est que, si j´appuye sur 1 il va bien dans le jeu, mais si j´appuye sur 2 il ne fait rien.
de plus, quand je compile, il me met que je ne peut pas mettre de " return 0;" dans une fonction. pq?
un tout grand merci d´avance
Il se passe que il y a une bonne trentaine de fautes pour un copier coller du premier truc sdl du cours, meme que j´ai pas mit l´image, cela devrait s´afficher noir pour quil y ai quelque chose, et la plein de fautes a presques chaque lignes.
si il accepte pas le return c pcque la fonction est void...
Désolé je dois yaller, si JYY passe il pourra t´expliquer le reste.
http://rafb.net/paste/results/XFieyU64.html J´ai le même problème que Liquilds-tabs, j´obtient que 5*6*7*8 =- 955661125 pourtant j´ai utilisez tout comme indiquer dans la msdn
biuss : si le compilo ( et pas le linker) rale sur presque chaque ligne, c´est vraissemblablement qu´il ne " connait" pas les fonctions utilisées, toutes les SDL_bidule donc. Ton env. de dev. doit etre mal configuré. Verifie les includes et les libs
matbox2 : pourquoi tu fais une boucle jusqu´à 10 si tu ne lis et passes que 4 valeurs ? . .. les 6 autres auraient tendance à valoir n´importe quoi
Salut, voici un message sans réponse de la page précédante:
Salut, j´ai une quuestion de rapidité, si je fait un classe sprite avec avec une image ima , 2 struc SDL_Rect dep et des, alors, je fait:
sprite::Fill(&)
{
SDL_FillRect(&, ima, &, screen);
}
Comment faire pour éxécuter le plus rapidement la SEULE apel/instruction de sprite::Fill ? en le mettant en return? en la mettant inline? es-ce en rapport avec les callback(je ne connais pas, mais es-ce rapport avec, comment ça fonctionne?)? ou sinon comment?
En même temp, es-ce vrai que quand on met un fonction membre avec son corp dans une classe, celle-ci est-elle déclarer explicitement inline?
Et es-ce bon une fonction inline, es-ce comme les variable register(jyy tu m´avait dit que les variable register pouvait faire perdre en vitesse à la place d´augmenter)??
biuss : dans ton programme qddition, il te manque les ; après les instructiosn cout.
pour le SDL, il ne faut pas mettre la dl dans le même dossier que les fichier, mais dans le même dossier que l´executable.
En ce qui concerne
pour SDL)
" copiez le repertoire SDL qui se trouve dans INCLUDE dans votre répertoire INCLUDE de DEV C++
copiez les fichier . a dans votre répertoire LIB de DEV C++
copiez le fichier sdl-config dans votre répertoire BIN"
1-> Je l´ai fait mais il y a un fichier " .la"
Dois je le copier\coller car ils disent les fichiers " .a"
pouky10 >
sprite::Fill(&)
ça passe a la compilation un truc pareil ?
Déja, tu n´as pas de valeur de retour :
met un void devant le tout. Les seuls cas ou tu n´as pas void devant, c´est pour les constructeurs et destructeurs : qui se doivent d´avor le meme nom que la classe, ce qui n´est pas le cas ici.
ensuite, en parametre, tu passes : &
qu´est ce que tu veux dire par la ?
screen est une SDL_Surface* n´est ce pas ?
Pourquoi ne définis tu pas le type devant ?
Ensuite, pour le inline : ça essaie d´implementer directement en précompilation la fonction dans le code appelant lui meme : ça évite un appel de pile, mais ça a tendance a faire grossir ton programme, ce qui n´est pas forcément une bonne idée : je te déconseille inline.
callback n´a rien a voir avec tout ça : c´est juste un pointeur de fonction windows qui a tendance a etre géré en threading, pour la programmation evenementielle : je déteste ça personnellement mais bon...
Jetait en train d´ecrire des choses comme koi cétait presque bon, quand tout a coup , j´ai trouvé une idee qui a marché . ..
SDL FONCTIONNE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Que sur le fichier carré par contre.
Quand je met compiler et executer, cela ne marche pas et dit deplacer le fichier sdl.dll.
Mais le programme marche en tout cas par l´icone carré ( vous saver). C´est l´essentiel .
Ouf, ma fonction était un exemple elle n´est dans aucun programme, j´ai tout tapé ici , c´est plutot en effet:
void sprite::Fill(SDL_Surface &)
{
SDL_FillRect(&, ima, &, screen);
}
Quelle est la méthode pour acccélérer au max cette fonction qui en appel une autre? Car pour le inline j´avait appris que ca accélérait(y a-t-il un autre moyen?) car un appel de fonction réduit la vitesse car il doit travaillé pour accédé à la fonction, donc ici ca fait 2 appel de fonction, comment faire pour que la fonction membre en l´appelant accède directement à SDL_FillRect? Y-a-t-il un moyen? Le inline n´est pas bon dans le cas d´une fonction membre pour simplifier l´apel d´une fonction?
le " inline" n´est qu´une INDICATION pour aider le compilo à décider du code à générer ; cela vient en complement des directives globales de compilations, qui définissent ce qui sera ou non reellement " inliné".
Personnelement je mets systematiquement tous mes getters/setters ou délégations pures ( comme ici) en inline ( ça ne coute guère plus de place dans des cas simples comme je viens de le dire, un appel de fonctions en valant un autre).
C´est toujours un petit plus, mais n´espere pas tripler les performances de ton programme avec des inlines.
pouky10 > il ne sert a rien d´essayer d´optimiser l´appel de cette fonction :
en effet, si tu gagnes directement 1 appel de fonction en faisant ça, tu as la fonction SDL_FilleRect qui est, de toute façon, bien plus lente.
Donc pas la peine d´essayer d´otpimiser un pauvre appel de fonction comme ça : tu ne gagnerais qu´une seconde sur des milliards d´appels !
par contre, ce qui m´interpelle dans ton appel de fonctions, c´est que tu passes un
SDL_Surface& screen : autrement dit une SDL_Surface par référence.
Et que tu envoies dans le fill screen tel quel ( donc un SDL_Surface) alors qu´il attend un SDL_Surface* !
tu devrais donc faire :
void sprite::Fill(SDL_Surface* screen)
{
SDL_FillRect(&, ima, &, screen);
}
Ce serait peut etre mieux ! Essaie !
biuss >
met le fichier sdl.dll a coté du " carré" dont tu parles ( que moi j´appelle fichier . exe)
PS: c´st moi biuss mais j´arrive plus a ouvrir mes mails, alors j´ai creer une nouvelle adresse e mail et un nouveau pseudo.
En fait, le truc sdl.dll, je l´avait deja mit, c´est pour cela que cela marchait autrement, et dev c++ etait allumé avant, donc il ne pouvait pas comprendre, maintenant, tout est bon.
Je voudrais demander un truc a JYY,
Avant les cours de SDL, je comprenait presque tout(de memoire je peut demander le prenom, le retenir).
Es ce que pourla SDL, je doit faire pareil, c´est a dire retenir chaque ligne et tout comprendre et pouvoir l´ecrire chez quelqun d´autre, sans rien.
Ou alors, je verrais par la suite et je connait les bases, mais je suis imcappable de le re ecrire.
Indique moi le cas meilleur, bien que je crois que le premier est le meilleur, il ne sert peut etre a pas grand chose que j´apprenne tout maintenant, alors indique moi
A plus !