jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
XML
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
| Page 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |
| Page 1 | |
dark-lord
|
# Posté le 20/03/2006 à 10:35:36 |
![]()
Ville : Metz |
J'ai un petit probleme avec la sdl mais je c'est pas pourquoi
Code : C #include <stdlib.h>
#include <stdio.h> #include <SDL/SDL.h> void pause(); int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL; SDL_Surface *lol[3] = {NULL}; SDL_Rect position; Uint32 couleur[3] = {0}; int i = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(512,512,32,SDL_HWSURFACE | SDL_DOUBLEBUF); for(i =0; i<= 2; i++); { lol[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, (i+1)*100, (1+i)*100 ,32,0,0,0,0); if(lol[i] == NULL) { fprintf(stderr,"probleme de création des surfaces : \n %s", SDL_GetError); } } couleur[0] = SDL_MapRGB(ecran->format , 255 , 0 , 0); couleur[1] = SDL_MapRGB(ecran->format , 0 , 0 , 255); couleur[2] = SDL_MapRGB(ecran->format , 0 , 255 , 0); for(i = 0; i<=2; i++) { SDL_FillRect(lol[i], NULL, couleur[i]); position.x = (512 - (1+i)*100) / 2; position.y = (512 - (1+i)*100) / 2; SDL_BlitSurface(lol[i], NULL, ecran, &position ); } pause(); for(i = 0;i<=2;i++) SDL_FreeSurface(lol[i]); SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } } En fait le code devrait ouvrir une fenetre, dans cette fenetre il doit y avoir 3 carre un sur l'autre et de couleur différente mais quand je compile le code ben il se lance mais se referme tout de sutie et un fichier stderr est créer avec ecrit ca dedans Code : Autre Fatal signal: Segmentation Fault (SDL Parachute Deployed)
|
| Publicité | # Posté le 20/03/2006 à 10:35:36 |
|
|
|
Natim
|
# Posté le 20/03/2006 à 11:22:36 |
|
Apprendre à coder c'est coder Groupe : Anciens
Ville : Belfort |
après ton premier for, il y a un ; donc il ne fait pas la boucle for et tu sors de ton tableau !
Code : C #include <stdlib.h>
#include <stdio.h> #include <SDL/SDL.h> void pause(); int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL; SDL_Surface *lol[3] = {NULL}; SDL_Rect position; Uint32 couleur[3] = {0}; int i = 0; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(512,512,32,SDL_HWSURFACE | SDL_DOUBLEBUF); for(i =0; i<= 2; i++) { lol[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, (i+1)*100, (1+i)*100 ,32,0,0,0,0); if(lol[i] == NULL) { fprintf(stderr,"probleme de création des surfaces : \n %s", SDL_GetError); } } couleur[0] = SDL_MapRGB(ecran->format , 255 , 0 , 0); couleur[1] = SDL_MapRGB(ecran->format , 0 , 0 , 255); couleur[2] = SDL_MapRGB(ecran->format , 0 , 255 , 0); for(i = 0; i<=2; i++) { SDL_FillRect(lol[i], NULL, couleur[i]); // RAJOUT POUR VOIR LES 3 CARRES SDL_SetAlpha(lol[i], SDL_SRCALPHA, 128); position.x = (512 - (1+i)*100) / 2; position.y = (512 - (1+i)*100) / 2; SDL_BlitSurface(lol[i], NULL, ecran, &position ); } pause(); for(i = 0;i<=2;i++) SDL_FreeSurface(lol[i]); SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } }
Édité
le 20/03/2006 à 11:26:24
par Natim
|
fock
|
# Posté le 20/03/2006 à 12:14:47 |
![]()
Ville : Gerzat |
bonjour tout le monde
plutôt que de créer un nouveau topic je poste sur celui là. voilà mon code est à peu près( parce que je l'ai fait avant et modifié selon celui de mat ) le même que m@teo21 mais il y a une erreur. quand je compile il le mets 0 errors , 0 warnings et process termined wirh statut 1 .Une fenetre s'ouvre mais se referme tout de suite.
Merci à ceux qui peuvent m'aider. Code : C #include <stdlib.h>
#include <stdio.h> #include <SDL/SDL.h> void pause(); int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL , *ligne[256] = {NULL}; SDL_Rect position_degrade; int i; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(400,256,32,SDL_HWSURFACE); for( i = 0 ; i < 255;i++) { ligne[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 400 , 1 , 32 , 0, 0, 0, 0); } SDL_WM_SetCaption("mon dégradé",NULL); SDL_FillRect(ecran , NULL ,SDL_MapRGB(ecran->format, 0, 0, 0)); for(i = 0; i <= 255;i++) { position_degrade.x = 0; position_degrade.y = i; SDL_FillRect(ligne[i],NULL,SDL_MapRGB(ecran->format,i,i,i)); SDL_BlitSurface(ligne[i] , NULL , ecran ,&position_degrade); } pause(); for(i = 0 ; i < 255 ; i++) { SDL_FreeSurface(ligne[i]); } SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } }
Édité
le 20/03/2006 à 12:15:50
par fock
|
Natim
|
# Posté le 20/03/2006 à 15:26:53 |
|
Apprendre à coder c'est coder Groupe : Anciens
Ville : Belfort |
Voici ton code corrigé :
Code : C #include <stdlib.h>
#include <stdio.h> #include <SDL/SDL.h> void pause(); int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL , *ligne[256] = {NULL}; SDL_Rect position_degrade; int i; SDL_Init(SDL_INIT_VIDEO); ecran = SDL_SetVideoMode(400,256,32,SDL_HWSURFACE); for( i = 0 ; i <= 255;i++) { ligne[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 400 , 1 , 32 , 0, 0, 0, 0); } SDL_WM_SetCaption("mon dégradé",NULL); SDL_FillRect(ecran , NULL ,SDL_MapRGB(ecran->format, 0, 0, 0)); for(i = 0; i <= 255;i++) { position_degrade.x = 0; position_degrade.y = i; SDL_FillRect(ligne[i],NULL,SDL_MapRGB(ecran->format,i,i,i)); SDL_BlitSurface(ligne[i] , NULL , ecran ,&position_degrade); } pause(ligne); for(i = 0 ; i < 255 ; i++) { SDL_FreeSurface(ligne[i]); } SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } } Il manquait un = dans la première boucle for ! Sachez que les SegFault vienne d'un depassement de tableau ! Donc regarder vos tableaux
|
fock
|
# Posté le 20/03/2006 à 16:00:23 |
![]()
Ville : Gerzat |
merci beaucoup natim .
|
gabi
|
# Posté le 20/03/2006 à 17:39:18 |
![]()
|
Au passage, si vous voulez récupérez des détails plus précis sur les erreurs qui se sont produites utilisez la fonction SDL_GetError() comme suit:
printf("%s",SDL_GetError() ); ça va créer un fichier stdout.exe dans le répertoire de votre projet, et dedans de plus amples détails sur les bugs ^^.Mettez en partout. |
fock
|
# Posté le 20/03/2006 à 19:15:27 |
![]()
Ville : Gerzat |
ouais j'avais remarqué
.
|
Retour au forum "Langage C" ou à la liste des forums
