voilà exactement...

Le tutoriel en ligne vous pose quelques problèmes ? C'est ici pour en parler !

voilà exactement...

Messagede YuGiOhJCJ le 24 Avr 2005 01:44

En fait, je crois que j'ai du mal à comprendre la signification de cette ligne:
Code: Tout sélectionner
while ( SDL_WaitEvent(&event))
{
}

Traduite en français ça devrait donner:
Tant que ************ répeter infiniment les instructions dans la boucle while

Et peux tu me completer cette phrase en remplaçant ************ par des mots?
Car j'ai l'impression que je n'ai pas bien compris la signification...

Au fait, sachant que mon programme fait plus de 1500 lignes, je peux pas tout te montrer...Par contre voici un plus gros extrait si tu veux:
Code: Tout sélectionner
/***INCLUDE***/
#include <stdio.h> //Pour printf(), scanf(), getchar()
#include <string.h> //Pour strcpy(), strcmp(), strlen()
#include <stdlib.h> // Pour exit()
#include <SDL/SDL.h> // pour l'utilisation générale de SDL

/***VARIABLES***/
char titre[40+1] = "Le titre de ma fenêtre\0";
char icone[7+5+4+1] = "images/icone.bmp\0";

/***INITSDL***/
int initSDL(){
   /*Initialisation de SDL*/
        if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO)<0){
                fprintf(stderr, "Impossible d'initialiser SDL: %s\n", SDL_GetError());
                exit(0);
        }//Fin de la boucle if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO)<0)
        atexit(SDL_Quit); //Pour quitter proprement SDL
   return(0);
}//Fin de la boucle int initSDL()

/***FENETRE***/
int fenetre(){
   SDL_WM_SetCaption("Les 4 éléments", NULL);
        if(fopen(icone, "r")==NULL){
                fprintf(stderr, "Impossible de charger l'icône du programme.\n");
                exit(0);
   }
        SDL_WM_SetIcon(SDL_LoadBMP(icone),NULL);
   return(0);
}

/***MAIN***/
int main(void){
//Là j'ai raccourci ^^

   /*Initialisation de SDL*/
   initSDL();

   /*Chargement des surfaces*/
   SDL_Surface *sfc_fenetre;

   /*Chargement de la variable event*/
   SDL_Event event;
   
   /*Titre, icône de la fenêtre*/
   fenetre();
   
        /*Chargement de la fenêtre*/
   sfc_fenetre=SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
        if(sfc_fenetre==NULL){
                  fprintf(stderr, "Impossible de passer en 640x480 en 16 bpp: %s\n", SDL_GetError());
                  exit(0);
        }//Fin de la boucle if(sfc_fenetre==NULL)
   
   /*Mettre à jour l'affichage*/
   SDL_UpdateRect(sfc_fenetre, 0, 0, 0, 0);
   
   /*Attendre l'appui d'une touche pour continuer*/
   while(SDL_WaitEvent(&event) && event.type != SDL_KEYDOWN){
      switch (event.type){
              case SDL_QUIT:   //Lorsque l'on ferme la fenêtre
               printf("1");
         break;

         case SDL_KEYDOWN:
                         printf("touche pressee : %d\n", event.key.keysym.sym);
                         break;
                }
   }
}//Fin de la main()


voilà j'éspère que ça peut t'aider pour la compréhension de mon problème.
j'ai testé ce code, il se compile bien ;-)[/b]
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede moi1392 le 24 Avr 2005 12:41

quelques remarques :

*** Quand tu est dans le case SDL_QUIT: cela veut dire que qulqu'un demande à quitter l'application. Mais SDL ne quitte pas de lui même, il faut donc apeller explicitement SDL_Quit après avoir liberé toutes els ressources allouées.

*** le prinf("1"); marche très bien. Si tu ne vois rien, c'est parce ce que tu n'apelles pas SDL_Quit, je m'explique... quand tu printf quelque chose à l'écran, ton texte N'EST PAS IMMEDIATEMENT ECRIT !!! il est à la place placé dans un buffer, qui quand il sera plein ecriras tout ce qu'il contient. comme "1" c'est pas très long, ça met beaucoup de temps à remplir :)
Mais il y a plusieurs manières de forcer l'ecriture. D'abord en quittant le programme, le tampon écrit tout ce qu'il contient même s'il n'est pas plein, ensuite, en appellent une fonction "spéciale" qui force à vider le tampon, c'est "fflush" tu peux l'utiliser sans paramètres, ça vide TOUS les tampons de tom application, ou alors avec un pointeur de fichier, ça ne vide que le tampon assicié à ce fichier (man fflush pour en savoir plus...)
Enfin, la dernière méthode, et surement la plus utilisée, c'est d'écrire un retour chariot ("\n"). ça vide automatiquement le tampon concerné ! donc, si tu remplaces ton printf("1"); par un printf("1\n"); tu le verras s'afficher comme il se doit !! :)

Maintenant une remarque sur le while :
tantque **** repeter instruction, le *** signifie, "la condition est vrai" ou en C, renvoie une valeur différente de 0 donc
while(SDL_WaitEvent(&event) && event.type != SDL_KEYDOWN)
signifie
tantque SDL_WaitEvent(&event) n'est pas nul ET que l'evenement reçu n'est pas un appuis sur une touche de clavier, répeter les instructions suivantes ...

Tu n'as donc pas besoin de ton "case SDL_KEYDOWN" car des que cet evenement arrivera, la seconde partie de ET sera fausse et donc tu sortiras du while :oui:
En fait, tu ne feras jamais les instructions contenues dans le case SDL_KEYDOWN

Quelques autres remarques :
n'oublie pas de SDL_Quitter dans le case SDL_QUIT ET de exit, sinon, tu te retrouveras après le while sans savoir si une touche a été pressée ou si l'appli a quittée.
n'oublie pas non plus le SDL_Quit à la fin de l'application.

Dans la fonction int fenetre, tu ouvres un fichier que tu ne refermes jamais... il faut penser à le refermer si tu as réussi à l'ouvrir, voila ce que je te propose :

Code: Tout sélectionner
int fenetre()
{
   SDL_WM_SetCaption("Les 4 éléments", NULL);
   FILE *file;
        if((file=fopen(icone, "r"))==NULL)
   {
                fprintf(stderr, "Impossible de charger l'icône du programme.\n");
                exit(0);
   }
   fclose(file);
          SDL_WM_SetIcon(SDL_LoadBMP(icone),NULL);
   return(0);
}

comme ça, dans le cas ou le fichier a pu être ouvert, tu le refermes :oui:

Enfin, mais ça c'est plus personnel, dans tes commentaires, tu mets "fin de boucle if"... if n'est pas une boucle mais une conditionnelle... tu fais la même chose pour les fonctions... je te propose plutot d'écrire fin de if (...) avec les "bon" ... et même chose pour les fonctions, fin de int fenetre()
Tout le monde comprendra tout de suite qu'il sagit d'une fonction :oui:

Voila, c'est tout pour le moment, si tu n'as pas tout compris, ou si tu as à ton tour des remarques n'hézite pas :)

à plus.
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Mateooo le 24 Avr 2005 14:26

Ouh là... J'ose même pas lire, ça me servirait à rien... Je cite quand même:
"Mon programme fait plus de 1500 lignes..." :goutter: Si il y a une erreur là dedans, tu dois bien galérer!
Mateooo
 

Messagede moi1392 le 24 Avr 2005 14:49

mateo a écrit:"Mon programme fait plus de 1500 lignes..." :goutter: Si il y a une erreur là dedans, tu dois bien galérer!


:D t'inquiètes pas, c'est pas parce qu'un programme est long qu'il est difficile de le corriger...
s'il est bien écrit et que tu utilises un deboguer, ça se passe bien
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Mateooo le 24 Avr 2005 19:53

hum? Tu cites qui là? Y a pas de "mateo" sur le site :P
cherchezpas
Mateooo
 

c moi

Messagede YuGiOhJCJ le 27 Avr 2005 19:09

C moi pas mateo qui l'a écrit ça : Mon programme fait plus de 1500 lignes...
lol

Et pour ta réponse, si c'est simple à trouver l'erreur souvent.
Lorsque tu compile ton fichier source en format executable, le compilateur te dit s'il y a des erreurs et te donne souvent le n° de la ligne ou ya le problème.
[yugiohjcj.free.fr]
Yu-Gi-Oh! Jeu de Cartes à Jouer
Avatar de l’utilisateur
YuGiOhJCJ
Bébé Chocobo
Bébé Chocobo
 
Messages: 121
Inscription: 22 Fév 2005 21:58
Localisation: Devant mon ordinateur en train de développer

Messagede 6trouille le 27 Avr 2005 19:41

Je comprends toujours pas grand chose, mais en regardant de plus près et en ayant l'esprit large, ça ressemble quand même un peu à Visual Basic que j'utilise un peu sur mes mini programmes d'excel (macro), tout comme le débogueur de ce dernier qui se lance si mon programme ou mes conditions ne tombes pas juste avec les lignes d'erreur surligné à corriger :oui:
La vitesse de la lumière étant supérieure à la vitesse du son, il est normal que certains paraissent brillants avant d'ouvrir la bouche ;)
Avatar de l’utilisateur
6trouille
Gourou Star Ocean
Gourou Star Ocean
 
Messages: 23713
Inscription: 07 Mar 2005 21:47
Localisation: Somewhere
Le jeu qui vous a fait connaître le site: Star Ocean 'till the End of Time

Messagede moi1392 le 27 Avr 2005 21:38

c'est plus ou moins ça 6trouille :oui: sauf que VB.. c'est DE LA MEEEERRRDDDEEE !!!! :D
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede SephyYazoo le 28 Avr 2005 00:28

mon dieu mon cerveau fume :goutter:
SephyYazoo
 

Messagede Vally8 le 28 Avr 2005 08:52

pis un programme de 1500 lignes c'est pas grand chose ;)
serieux, là, ca va encore, c'est de l'anglais : if then else....

je me souviens quand je programmais en Basic sur mon 6128+, les instructions étaient souvent juste des chiffres séparés par des virgules (c'était un programme que j'avais trouvé dans un magasine de programmation à l'epoque et donc que j'ai recopier : c'était un jeu : arsene lupin)...
un truc à s'arracher les cheveux !
impossible à lire... en plus, y'avait plus de lignes qu'un fichier de l'amstrad ne pouvait en contenir : la grosse galere pendant plus d'une semaine...

tout ca au final pour un petit jeu genre dans BK dans le jardin qui plantait au 2eme tableau.... et impossible de savoir où était l'erreur....

ah le bon vieux temps....
Moi, j'aime schtroumpfer...
Si vous voulez faire une soluce, plutôt que de m'envoyer un MP, postez-là ici (j'ai rarement le temps de répondre à tous les MP)
Avatar de l’utilisateur
Vally8
Gouroute du Site
Gouroute du Site
 
Messages: 15567
Inscription: 07 Mai 2004 18:14
Localisation: Au pays des schtroumpfs
Jeu(x) du moment: Professor Layton, Tales of Vesperia, Dragon Quest 9

Messagede 6trouille le 28 Avr 2005 11:26

lol

Toi aussi tas eu un 6128+ les bon ptit souvenir avec ce 1er ordi même si je ne programmait pas plus qu'aujourd'hui.

Sinon, je confirme VB c'est de la merde mais ça permet quand même certain truc, surtout quand, comme moi, tu ne cherche pas à l'exploiter à fond mais uniquement de manière superficielle pour des petits programmes excel :oui:
La vitesse de la lumière étant supérieure à la vitesse du son, il est normal que certains paraissent brillants avant d'ouvrir la bouche ;)
Avatar de l’utilisateur
6trouille
Gourou Star Ocean
Gourou Star Ocean
 
Messages: 23713
Inscription: 07 Mar 2005 21:47
Localisation: Somewhere
Le jeu qui vous a fait connaître le site: Star Ocean 'till the End of Time

Messagede moi1392 le 28 Avr 2005 11:33

moi, ce sur quoi je bosse, j'ai largement dépassé le 10000 lignes... il faudrait que je compte...

Dès que j'ai quelque chose de probant.. promis, je vous le montre :oui:
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede 6trouille le 28 Avr 2005 11:35

Et c'est censé donner quoi ce sur quoi tu bosses :quesion:
La vitesse de la lumière étant supérieure à la vitesse du son, il est normal que certains paraissent brillants avant d'ouvrir la bouche ;)
Avatar de l’utilisateur
6trouille
Gourou Star Ocean
Gourou Star Ocean
 
Messages: 23713
Inscription: 07 Mar 2005 21:47
Localisation: Somewhere
Le jeu qui vous a fait connaître le site: Star Ocean 'till the End of Time

Messagede moi1392 le 28 Avr 2005 12:29

je travaille sur un rpg en 2D (type SoM ou zelda, mais en beaucoup moins bien :D)

je peux vous faire quelques screen shoots si vous le souhaitez :oui:
Avatar de l’utilisateur
moi1392
Chocobo des mers profondes
Chocobo des mers profondes
 
Messages: 3986
Inscription: 27 Juin 2004 12:03
Localisation: chez wam

Messagede Shadok Knight le 07 Mai 2005 21:32

oh oui des screens s'il te plaît oh moi1515marignan.
"Pourquoi faire simple quand on peut faire compliqué ?"
Président du fan-club de Mateooo
Avatar de l’utilisateur
Shadok Knight
Chocobo jaune
Chocobo jaune
 
Messages: 307
Inscription: 07 Mar 2005 12:50
Localisation: Ga

Messagede Mateooo le 07 Mai 2005 21:48

déja en train de dire nimpe dès ton arrivée, gargamel...
M'enfin, ça t'empêche aps d'envoyer des screens quand même moi1789!
Mateooo
 

Messagede danban le 07 Mai 2005 22:48

RPG maker ?
danban
 

Messagede Mateooo le 07 Mai 2005 22:57

ouaip.. C'est pour ça qu'on aurait envie de voir ses screens shots...
D'ailleurs, si t'en fais un bien, tu pourras le mettre sur le site? :D
Mateooo
 

Messagede SephyYazoo le 07 Mai 2005 23:09

Bah tu ne pourras pas faire mieux que Secret of Mana :langue:
Pis moi j'ai déjà essayé RM2K mais alors j'ai strictement rien compris #-o :-k
SephyYazoo
 

Messagede danban le 08 Mai 2005 15:30

j' en avait fait un avec le 2003 qui durer 2 heures environ mais je l' ai plus...c' était l' histoire de 2 anges enfant d' un ange déchu...la fille avez le rôle de la gentille et le gars lui a suivu son père. Du coup le dernier boss c' était son frère, avec une musique approprier ;) .
J' en avait commencer un aussi avec XP, je voulais faire un Star Ocean Colliseum avec tous les persos dans la même ville...mais je l' ai laisser tomber très vite parce que c' est chaud de faire les persos et j' ai eu d' autres occupation qui sont arriver au même moment.

moi1392: j' ai jamais compris comment se servir des variables du coup j' ai bien gallerer avec mes swihtch partout....
danban
 

Suivante

Retourner vers Besoin d'aide en SDL ?

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités

cron