J´ai une Nvidia
La version des drivers est 66.93
Vraiment un étrange problème, si vous pouvez m´aider, je vous en remercie mille fois ( même si vous ne faites que essayer ![]()
++
au passage si qqn retourne sur la page précédente, j´ai quelques questions sur iostream.
merci.
Bon , en fait le probleme des headers , n´en est pas un , parceque il n´y a rien qui cloche . ..
pas besoin de #ifndef avec dev-cpp ? Oo
mais la , j´ai un probleme avec la librairie SDL
j´affiche une image avec SDL_BlitSurface aux coordonnées ( Xpos , Ypos )
comme ceci :
SDL_BlitSurface( image , NULL , Affichage , & ) ;
ca , ca marche ![]()
mais le probleme , c´est que pour eviter les " trainées d´image " , il me faut redessiner aussi l´arriere plan
la , si je le dessine en entier , avec la meme fonction mais Xpos = 0 et Ypos = 0 , ca marche parfaitement , mais , pourquoi redessiner TOUT l´écran , alors qu´il suffirait de redessiner l´écran des coordonnees ( Xpos,Ypos) à ( Xpos+700,Ypos+200) ( mon image fait 700*200 pixels ) ?
j´utilise donc SDL_BlitSurfacee comme ceci :
int AffichageOuRien(SDL_Surface *image , int x , int y, int x2 , int y2 , int w , int h)
{
SDL_SetColorKey( image , SDL_SRCCOLORKEY , SDL_MapRGBA( image->format,0 , 255 , 0 , 0));
SDL_Rect bidule;
bidule.x = x;
bidule.y = y;
SDL_Rect truc;// Comment ca pas explicites mes noms de structures ?
truc.x = x2;
truc.y = y2;
truc.w = w;
truc.h = h;
SDL_BlitSurface( image , & , Affichage , & ) ;
SDL_Flip(Affichage);
return 0;
}
mais le probleme , c´est que mes pingouins ne s´affichent plus ! !
Si quelqu´un pouvait me dire comment utiliser cette fonction . ..
a noter que je redessine l´écran avant de bouger , donc mes pingouins ne devraient pas etre cachés . ..
sinon , tant pis , je remettrais comme aant , mais c´est dommage . ..
bon ce soir des que je serais dans le calme vert 20h30 21h00 je reprenderais de zéro les tutos De jean yves yves
je vais me bouger mon gros tas de . ..
de jecone nan je suis content je vais enfin faire quelque chose c´est les vacance depuit le temps que je les att
![]()
sa fait depuit 1h30 que je suis sur tes tuto jyy et frenchement je pige trop bien
merci ![]()
Hola ! Je reviens de WE ( avec ma copine)
Bref, donc j´ai a rattraper, je ne suis pas sur de répondre a tout, réitérez les demandes si j´en oublie !
jejej > ta fonction semble bizarre, ça ressemble a un Blit simplifié ? Et tu as bien raison de faire ça
Cependant, je dirais que le flip a la fin n´a rien a faire la :
Si tu flip a chaque fois que tu blit, ça ne fera pas ce que tu veux : blit plusieurs fois, puis, seulement a la fin : flip.
perdu_de_linfo >
dans un premier temps, enleve purement le parametre SDL_FULLSCREEN que tu as dans l´init : ça te permet de faire un mode fenetré, qui, meme plus lent, aura l´avantage de pouvoir se fermer plus facilement qu´un plein écran qui plante
As tu bien mis l´image dans le bon répetoire ?
Car si l´image n´est pas chargé, LoadBMP te renvoie NULL : et ça plante derriere.
Essaie de tester les valeurs de retours ( débug)
En ce qui concerne les params des while :
le " 1" veut dire " vrai" en C, donc le 1er while, comme te disait dnob, ça veut dire que ça boucle infiniment.
Le 2e :
SDL_PollEvent(&) te renvoie VRAI si il y a des evenements en attente, FAUX s´il n´y en a pas. Un evenement est, ici, l´appui d´une touche, de la souris, joystick, ou autre...
Donc ce while veut dire, en français :
" Tant qu´il y a un evenement qui attend, récupere le dans " event"..." et apres, dans le corps, il y a analyse de l´evenement récupéré.
je me permet de reposter ma question qui a glissé de la page :
est ce qu´en C++ avec iostream on peut effacer l´écran ( la console je veut dire) sans utiliser un system("CLS") c´est à dire juste avec les classe de iostream ( cout.clear() ne fait pas ça apparement).
et aussi, est-il possible de déplacer le curseur à une ligne et une colonne choisis arbitrairement ?
tant que j´y suis, peut-on changer a couleurs de la sortie ? et enfin comment peut-on remplacer le system("pause") par une commande c/c++ ( donc portable) qui se débloque réellement à l´appuie de n´importe quelle touche et pas juste de entrée.
merci d´avance pour vos réponse.
Ce que tu décris est typiquement la fonctionnalité de conio.h
conio.h était un standard. Je dis " étais" car il s´oublie de plus en plus, et certains compilos l´oublient ( je crois que DevC++ l´accepte toujours, pas sur, mais je crois que certains versions de visual l´oublient)
Il contient donc :
- déplacement du curseur texte
- couleurs texte
- CLS
etc
Tiens moi au courant pour me dire si ton compilo le supporte :
tuto sur mon site, dans mon tuto : chapitre B.
Tu as aussi, la fonction getch() qui permet de tester directement le clavier, ce qui pourrait te remplacer le system("PAUSE")
En ce qui concerne iostream et stdio, leur role n´étant pas de mettre en forme, ils ne savent pas gérer cela.
cout.clear() ou flush ?
permet de vider les caracteres en attente :
si par exemple tu envoies sur un periphérique occupé, autre que la console, et que donc, ça ne peut pas passer, tu utilises cette méthode pour vider le buffer ![]()
j´utilise le compilo du toolkit visual c++ 2003
il a bien conio.h, mais je ne peut pas compiler l´exemple de ton tuto, il ne connait aucune des fonctions que tu utilise.
donc je suppose qu´il n´est pas compatible.
merci quand même.
par contre getch() passe bien même s´il est dans conio.h
d´acc
comme moi, j´ai visual C++ 6, qui a une version allégée de conio.h, donc mon tuto B, que j´avais fait sous Dev, n´y marche pas...
je ne sais pas s´il y a des équivalences...
Sous Linux il y a ncurses.h
Apres, le mieux je pense, c´est le mode graphique, tu ne t´embetes plus avec les limitations de la console
Cependant, si tu trouves une lib qui marche sous Visual qui fait ce que conio.h faisait, je suis preneur ![]()
bah, win32 le fait, mais même si je ne suis pas un fana de la portabilité, là ça serait vraiment sacrifié son code sur l´autel de microsoft.
sinon une possibilité serait de compiler avec dev c++ une dll qui incluerait toute les fonction de conio.h
tiens je vais essayer de faire ça un de ces jours.
Bonne idée ça !
Mais bon, une dll, c´est microsoft, lool
Bon, cependant, sans rire, si tu fais ça, je suis preneur ! ![]()
je retire ce que j´ai dit même dev c++ a maintenant une version allégé de conio.h et j´ai esayé avec gcc sous cygwin, mais lui il n´a même pas conio.h !
je crois que cette librairie est définitevement morte.
1- Pourquoi dans ton tuto tu as remplacé cin.get() par system(´PAUSE´) ?
2- C´est quoi la différence entre compile/build/rebuild ?
3- dans mon bouquin : " Un pointeur a toujours la même taille ( 4 octets pour un système à adressage sur 32 bits), mais le langage impose de leur donner un type." > c´est vrai qu´ils font toujours la même taille ? pourtant si on leur donne un type c´est pas pour faire joli quand même
4- j´ai essayé de compiler un bout de code pour lire un . xm, ça compile mais l´exe plante et le débugger dit que FMUSIC_MODULE peut pas être chargé ou quelque chose comme ça. Ca me renvoie à la ligne 270 du fichier crt0.c : __except ( _XcptFilter(GetExceptionCode(), GetExceptionInformation()) )
J´ai au départ codé à partir uniquement de la doc, puis j´ai vu que ça allait pas alors j´ai adapté le code de ton tuto pour voir si c´était vraiment mon code qui était foireux, mais je retrouve la même erreur. Je paste ton code revisité :
int main()
{
FMUSIC_MODULE* x;
FSOUND_Init(44100, 32, 0);
x = FMUSIC_LoadSong("zizique.xm");
FMUSIC_PlaySong(x);
cin.get();
FMUSIC_FreeSong(x);
return 0;
}
1. cin.get() n´est pas fiable, bcp de monde a eu des ennuis avec, dus a la non uniformité du code \n, bref... met system("PAUSE"); ça marche bien au moins
2.
. compile compile ton fichier . cpp que tu traites uniquement.
. build compile tous les fichiers qui ont été modifiés depuis la derniere compilation, et link.
. rebuild recompile tous les fichiers, et link.
3. un pointeur fait toujours la meme taille, cependant, le type qu´il te renvoie dépend du type du pointeur :
sizeof(ce_que_tu_veux * ) =4
sizeof(*int) = 4
sizeof(*char) = 1
sizeof(*short) = 2
Pour fsound, je ne sais pas comment ça se fait, tu dis que ça ne compile pas ? ou alors ça se compile et ça se lance ? si ça se lance vérifie que x ne soit pas a NULL
ooooh merci JYY , je comprenais pas pourquoi mes pingouins clignotaient alors que g t quand meme en DOUBLE BUF + SDL_FLIP(AFFICHAGE) . ..
la ca marche . .. il me reste encore a comprendre pourquoi mes pingouins s´affichent en haut de l´ecran au centre alors que leur coordonnees sont Xpos = 40 , Ypos = 500
et pourquoi ils se deplacent en diagonale , alors que seule Xpos varie . ..
ce genre d´erreurs, ça sent le copier coller qui a été fait trop vite :
surement que qq part, tu as un truc genre :
machin.x = x;
machin.y = x;
alors que tu aurais du mettre
machin.y = y;
![]()
Ca sent aussi le vécu pour toi , JYY ? ^^
c´était exactement ca . ..