Souhaitant créer un menu SDL pour mon jeu, je me suis dis que le faire avec des fonctions qui ont chacune une tâche serait bien plus propre que tout ranger dans le main.
Le truc, c'est quand j'exécute j'ai une erreur de segmentation (je suis sous Linux). J'ai check le breakpoint avec gdb et le problème vient de 'SDL_FreeSurface'.
Mon main :
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include "menu.h"
int main(int argc, char *argv[])
{
menu m;
SDL_Init(SDL_INIT_VIDEO);
m.screen = SDL_SetVideoMode(1280,960,32,SDL_HWSURFACE|SDL_DOUBLEBUF);
afficherMenu(&m);
SDL_Quit();
return 0;
}
Écrire menu m ou menu k n'initialise pas les membres de la structure. Donc, m->continuer a une valeur indéfinie en ligne 46, de même que tous les membre de k dans la fonction updateMenu() (sauf etat). N'aurais-tu pas oublié d'appeler initialiser() ?
À part ça, ça me semble confus comme organisation.
- Edité par edgarjacobs 22 février 2020 à 15:41:07
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Écrire menu m ou menu k n'initialise pas les membres de la structure. Donc, m->continuer a une valeur indéfinie en ligne 46, de même que k->background en lignes 27 et 39 (par exemple). N'aurais-tu pas oublier d'appeler initialiser() ?
- Edité par edgarjacobs il y a moins de 30s
Salut,
J'ai écris menu k car sinon il y'aurait un 'conflicting type' quand je fais l'appel de updateMenu dans afficherMenu (selon le compilateur). Sinon, j'ai essayé d'appeler initaliser dans le main mais toujours rien, segmentation fault quand j'exécute.
Je ne comprends pas vraiment ce que tu veux faire, mais tu as sans doute mal compris la partie pointeur du C (et elle est vitale). Si tu avais écrit, ligne 48, updateMenu(m), tu n'aurais pas eu d'erreur (de compilation)
Edit: j'ai modifié mon 1er post alors que tu écrivais.
- Edité par edgarjacobs 22 février 2020 à 15:48:18
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Je ne comprends pas vraiment ce que tu veux faire, mais tu as sans doute mal compris la partie pointeur du C (et elle est vitale). Si tu avais écrit, ligne 48, updateMenu(m), tu n'aurais pas eu d'erreur (de compilation)
Edit: j'ai modifié mon 1er post alors que tu écrivais.
- Edité par edgarjacobs il y a 5 minutes
D'accord, merci. Sinon, t'as une idée d'organisation ? Je comprends pas trop en quoi l'organisation est confue
int menu(....) {
initializeMenu();
dislayMenu();
rc=treatMenu();
expungeMenu();
return(rc);
}
int main(....) {
initialize();
switch(menu()) {
case 1:
fct1();
break;
case ....:
fct....();
break;
default:
break;
}
expunge();
return(0);
}
- Edité par edgarjacobs 22 février 2020 à 16:18:37
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Problème avec SDL
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent