begin process at 2012 05 28 17:16:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Bibliothèque SDL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Bibliothèque SDL

mercredi 24 novembre 2010 à 21:14:18 | Bibliothèque SDL

haarp6

Bonsoir à tous, je bosse en ce moment sur un petit démineur en SDL, donc je viens de commencer dessus, et mon code me génère une exception non gérée.
Donc dès que j'appuie sur '1', j'aimerais créer une nouvelle surface, game, afin de blitter dessus mes bmp.
Donc, je bloque à l'affichage de la surface game
voilà mon code:

Code C/C++ :
#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_ttf.h>

 
void init(TTF_Font *police,SDL_Surface *ecran);
void event_handler(SDL_Surface *ecran);//,SDL_Surface *game);
void jouer(SDL_Surface *ecran, SDL_Surface *game);

int main(int argc, char *argv[])
{
	SDL_Surface *ecran = NULL,*game = NULL;
    TTF_Font *police = NULL;   

	init(police, ecran);
	event_handler(ecran);

	
	TTF_CloseFont(police);
	TTF_Quit();
    SDL_Quit();
    return EXIT_SUCCESS;
}

void init(TTF_Font *police, SDL_Surface *ecran)
{
	
	SDL_Color white = {255, 255, 255};

	SDL_Surface *play = NULL, *help = NULL;
    SDL_Rect position;

    
    SDL_Init(SDL_INIT_VIDEO);
	TTF_Init();

	police = TTF_OpenFont("Harabara.ttf", 20);
    ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);		//170 * 255 = sizeof the original;
	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
	play = TTF_RenderText_Blended(police, "1:  Jouer", white);
	help = TTF_RenderText_Blended(police, "2: Aide", white);
    SDL_WM_SetCaption("Demineur", NULL);
	position.x = 50;
	position.y = 50;
	SDL_BlitSurface(play, NULL, ecran, &position); 
	position.x = 50;
	position.y = 90;
	SDL_BlitSurface(help, NULL, ecran, &position);
	
    SDL_Flip(ecran);

}

void event_handler(SDL_Surface *ecran,SDL_Surface *game)
{
	SDL_Event event;
    int keep = 1;
	
	
	while(keep)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                keep = 0;
                break;
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_q:
                        keep = 0;
                        break;
					case SDLK_1:
						jouer(ecran,game);
						break;
                }
                break;
        }        
    }
}

void jouer(SDL_Surface *ecran, SDL_Surface *game)
{
	SDL_Rect positiongame;

	positiongame.x = 0;
	positiongame.y = 0;

	game = SDL_CreateRGBSurface(SDL_HWSURFACE, 220, 180, 32, 0, 0, 0, 0);
	SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
	SDL_BlitSurface(game, NULL, ecran, &positiongame);
	SDL_Flip(ecran);
	//SDL_FreeSurface(game);

}
mercredi 24 novembre 2010 à 23:22:37 | Re : Bibliothèque SDL

Ballesteros

As tu essayé de débugger pas à pas l'éxecution ? Quand tu rentre dans la fonction jouer, tes 2 paramètres d'entrée sont des pointeurs null, quand tu fais init(police,ecran), tu ne récupère pas un 'ecran' initialisé.

Il faudrait que ta fonction init retourne le pointeur 'ecran'. J'espère que c'est assez clair ?
mercredi 24 novembre 2010 à 23:29:29 | Re : Bibliothèque SDL

Ballesteros

Si tu préfère la réponse en code, ta fonction Init ressemblera à :

SDL_Surface * init()
{
SDL_Surface * ptrEcran;
...
return ptrEcran;
}

et tu l'appelle : SDL_Surface *ecran=init();

Je présume que ta surface game s'initialise dans jouer(), il faudra surement faire pareil.

Sur le principe, il faut que ton main 'connaisse' toutes tes surfaces et que tu ait un module qui se charge de la création, un module qui se charge de l'affichage, et un module qui se charge des intéractions du joueur.


Cette discussion est classée dans : ecran, sdl, surface, ttf, game


Répondre à ce message

Sujets en rapport avec ce message

problème de boucle pour un affichage SDL [ par sparox1 ] Bonjour à tous, j'ai établis un début de programme de poker pour un projet à rendre dans la fin de cette année scolaire, ce programme tire 5 cartes au Tableaux dynamiques GLuint [sous windows] [ par Djoss666 ] Bonjour à tous. Je cherche à charger le nom des textures que je récupère dans un fichier, dans un tableau dynamique GLUint, afin de ne pas avoir à re [Xcode]Aide integrer image [ par mirmoleboss ] Bonjour, Voilà j'ai fait ce petit code mais il ne marche pas enfin il marchait mais l'intégration d'une image ne marche pas, je ne vois pas d'où vient Problème pour afficher des images PNG en SDL [ par jedinos ] Bonjour à tous ! Voilà, en suivant attentivement le cour de programmation en C du site du zéro, j'ai pu il y a quelques jours ( enfin ) commencer la Problème pour calculer le H pour l'A star ( * ) [ par jedinos ] Bonjour à tous ! [url=http://www.siteduzero.com/tutoriel-3-34333-le-pathfinding-avec-a.html]Dans ce tuto du pathfinding A star[/url] , l'auteur ne no moteur physique [ par Jackyzgood ] Bonjour à tous ! J'essaye actuellement de créer une fonction qui me gère des trajectoires simple dans un champ de pesanteur avec rebond. Mon problème SDL PB [ par asse63530 ] slt je suis en  train de faire un jeu en C sdl voila j'ai un vaisseau et je dois tirer sur de smétéorite des qu'une météorite touche le vaisseau une b [SDL]probléme avec l'affichage [ par Sega24 ] bonjour à tous, je suis débutant en programmation et je viens de faire un code SDL en vu d'un projet mais je n'arrive pas a avoir les images malgré qu probléme de linker "SDL" [ par yoshiv ] Bonjour, bonsoir. J'ai un probléme avec un exercice (morpion en SDL) [u]mon system[/u]: vista. visual c++ express 2008. Le code ou il y a le probléme probleme jeu du labyrinthe (SDL) [ par abggba ] Slt tout le monde, bon voila j'ai un probleme avec mon programme qui seg fault! et en plus il n'affiche que les murs alors qu'ne fait je voudrais qu'i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales