Le chemin qui est indiqué au niveau de fichier a été édité par toi (pour cacher les éléments sur ton screen) ou c'est vraiment ce qui y est écrit ? Parce que ça paraît pas trop normal. Quand tu reviens en arrière l'erreur doit rester non ?
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL_image.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL; // pointeur ecran
SDL_Surface *zozor = NULL;
SDL_Rect positionZozor;
positionZozor.x = 299;
positionZozor.y = 193;
SDL_Event event; // variable événement
int continuer = 1; // booléen (boucle while)
SDL_Init(SDL_INIT_VIDEO); // appel SDL (moduleVIDEO)
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // paramètres ecran
SDL_WM_SetCaption("Gestion des événements en SDL", NULL); // titre ecran
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
SDL_Flip(ecran);
while (continuer) // TANT QUE la variable ne vaut pas 0 (qu'elle vaut 1)
{
SDL_WaitEvent(&event); // traitement d'un événement
switch(event.type) // type d'événement qui doit se produire
{
case SDL_QUIT: // OU quitter en cliquant sur la croix
continuer = 0;// sortie du programme
break;
case SDL_KEYDOWN: // OU quitter en appuyant sur une touche
switch (event.key.keysym.sym) // liste des touches
{
case SDLK_ESCAPE: // ou par la touche ECHAP
continuer = 0; // sortie du programme
break;
case SDLK_SPACE: // ou par la touche ESPACE
continuer = 0; // sortie du programme
break;
}
break;
}
}
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS;
}
La façon ci-dessus se compile très bien!
Mais la façon ci-dessous ne se compile pas... (Message d'erreur : "No such file or directory")
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL_image.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *zozor = NULL;
SDL_Rect positionZozor;
SDL_Event event;
int continuer = 1;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Gestion des événements en SDL", NULL);
/* Chargement de Zozor */
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - zozor->w / 2;
positionZozor.y = ecran->h / 2 - zozor->h / 2;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
/* On efface l'écran */
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
/* On place Zozor à sa nouvelle position */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
/* On met à jour l'affichage */
SDL_Flip(ecran);
}
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS;
}
- Edité par ThierryRobert4 24 juillet 2017 à 15:59:26
Nan mais ce que je veux dire, c'est dans ton screen de l'erreur. Tu vois qu'au niveau de la colonne fichier, tu as un chemin ..\..\..\....., et ça c'est pas trop valide comme chemin normalement. C'est pour ça que je te demande si c'est toi qui a viré le nom de fichier, où si c'est vraiment ce qui apparaît. Parce que dans le second cas, ça ressemble à une configuration qui fait n'importe quoi.
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL_image.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL; // pointeur ecran
SDL_Surface *zozor = NULL;
SDL_Rect positionZozor;
positionZozor.x = 299;
positionZozor.y = 193;
SDL_Event event; // variable événement
int continuer = 1; // booléen (boucle while)
SDL_Init(SDL_INIT_VIDEO); // appel SDL (moduleVIDEO)
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE); // paramètres ecran
SDL_WM_SetCaption("Gestion des événements en SDL", NULL); // titre ecran
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
SDL_Flip(ecran);
while (continuer) // TANT QUE la variable ne vaut pas 0 (qu'elle vaut 1)
{
SDL_WaitEvent(&event); // traitement d'un événement
switch(event.type) // type d'événement qui doit se produire
{
case SDL_QUIT: // OU quitter en cliquant sur la croix
continuer = 0;// sortie du programme
break;
case SDL_KEYDOWN: // OU quitter en appuyant sur une touche
switch (event.key.keysym.sym) // liste des touches
{
case SDLK_ESCAPE: // ou par la touche ECHAP
continuer = 0; // sortie du programme
break;
case SDLK_SPACE: // ou par la touche ESPACE
continuer = 0; // sortie du programme
break;
}
break;
}
}
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS;
}
La façon ci-dessus se compile très bien!
Mais la façon ci-dessous ne se compile pas... (Message d'erreur : "No such file or directory")
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL_image.h>
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *zozor = NULL;
SDL_Rect positionZozor;
SDL_Event event;
int continuer = 1;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Gestion des événements en SDL", NULL);
/* Chargement de Zozor */
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
/* On centre Zozor à l'écran */
positionZozor.x = ecran->w / 2 - zozor->w / 2;
positionZozor.y = ecran->h / 2 - zozor->h / 2;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_UP: // Flèche haut
positionZozor.y--;
break;
case SDLK_DOWN: // Flèche bas
positionZozor.y++;
break;
case SDLK_RIGHT: // Flèche droite
positionZozor.x++;
break;
case SDLK_LEFT: // Flèche gauche
positionZozor.x--;
break;
}
break;
}
/* On efface l'écran */
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
/* On place Zozor à sa nouvelle position */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
/* On met à jour l'affichage */
SDL_Flip(ecran);
}
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS;
}
- Edité par ThierryRobert4 24 juillet 2017 à 15:59:26
@Romar1/Romain : Salut, le problème est déjà résolu, mais en plus tu donnes une solution hasardeuse. On ne donne pas de solutions comme ça au hasard, « peut-être que ça va marcher ».
yo@n97one : ok, ok je n'avais pas très bien compris que le probleme avait était resolus mais bon c'est pas une soluce hasardeuse
car ça marche, de plus je n'ai nullement dit : peut être que ca va marcher, j'ai donné une solution qui pour tout les cas que j'ai rencontrés on fonctionner !!
@Romar1/Romain : non, ça ne marche pas forcément. Sais-tu pourquoi on a l’erreur « No such file or directory ». Sais-tu comment on indique au compilateur où chercher les fichiers d’en-têtes ? Ce sont les réponses à ces questions qui permettent de résoudre ce type de problème. Sinon, j’aurais pu lui dire, essaie SDL/SDL/SDL/SDL/SDL/SDL_image.h, et oui, ce dernier truc peut marcher si le fichier SDL_image.h a été placé dans un dossier SDL/SDL/SDL/SDL/SDL/ et qu’on a indiqué au compilateur de chercher les fichiers d’en-têtes dans le dossier où est placé le premier dossier SDL.</sdl>
jai un message derreur lors de la configuration de mon projet sdl
the path you entered seems valid,but the wizard can't locate
the include directory
this wizard cannot continue
Tuto Mateo@21 Partie 3 Création d'une fenêtre
× 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.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C