begin process at 2012 05 30 08:38:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

SDL


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

SDL

mardi 27 novembre 2007 à 09:03:46 | SDL

lushkah

bjr,
j'ai un pb avec la SDL  en C, je débutes et j'ai passer la nuit a essayer de faire une disparition en fondu, j'essayes de programmer un jeu de dames en C, quelqu'un pourrait il m'aider ?.
au démarrage du jeu s'affiche un ecran d'accueil avec le menu  et dès l'utilisateur effectut un choix l'écran d'accueil est supposé disparaitre en fondu.  mais ca marche pas

void jouer(SDL_Surface *ecran, SDL_Surface *menu)
{
    SDL_Surface *fond = NULL, *pionBlanc = NULL, *pionNoir = NULL, *selection = NULL;
    SDL_Rect positionPion, position, positionSelection;
    SDL_Event event;

    int continuer = 1, continuer1 = 1, plusDePionsBlanc = 0, plusDePionsNoir = 0, i, j, k = 0, l = 0, m, n, typePion;
    int tableau[NB_CASE_HAUTEUR][NB_CASE_LARGEUR] = {5,1,5,1,5,0,5,2,5,2,1,5,1,5,0,5,2,5,2,5,5,1,5,1,5,0,5,2,5,2,1,5,1,5,0,5,2,5,2,5,5,1,5,1,5,0,5,2,5,2,1,5,1,5,0,5,2,5,2,5,5,1,5,1,5,0,5,2,5,2,1,5,1,5,0,5,2,5,2,5,5,1,5,1,5,0,5,2,5,2,1,5,1,5,0,5,2,5,2,5};
    int clic = 1, blitPas = 1, cpt = 250;

    fond = IMG_Load("images/fond2.jpg");
    pionBlanc = IMG_Load("images/pion1.png");
    SDL_SetColorKey(pionBlanc, SDL_SRCCOLORKEY, SDL_MapRGB(pionBlanc->format, 0, 0, 0));
    pionNoir = IMG_Load("images/pion2.png");
    SDL_SetColorKey(pionNoir, SDL_SRCCOLORKEY, SDL_MapRGB(pionNoir->format, 0, 0, 0));
    selection = IMG_Load("images/selection1.png");

    position.x = 0;
    position.y = 0;
    positionSelection.x = k;
    positionSelection.y = l;
    
   // c'est ce bout de code qui est censé faire la disparition
    while(cpt>=0)
    {
      SDL_SetAlpha(menu, SDL_SRCALPHA, cpt);
      SDL_BlitSurface(menu, NULL, ecran, &position);
      cpt-=10;
      SDL_Delay(100);
    }

     while(continuer)
    {
        SDL_WaitEvent(&event);

    switch(event.type)
    {
        case SDL_QUIT:
            continuer = 0;
            break;
        case SDL_KEYDOWN:
            switch(event.key.keysym.sym)
            {
                case SDLK_ESCAPE:
                    continuer = 0;
                    break;
            }
            break;
        case SDL_MOUSEBUTTONUP:
            switch(event.button.button)
            {
                case SDL_BUTTON_LEFT:
                    k = event.button.x / TAILLE_CASE;
                    l = event.button.y / TAILLE_CASE;
                    positionPion.x = k;
                    positionPion.y = l;
                    typePion = tableau[k][l];
                    //deplacerPion(tableau, &positionPion, typePion);
                    if(tableau[k][l] != 5)
                    {
                        if(tableau[k][l] != VIDE)
                        {
                           positionSelection.x = (k * TAILLE_CASE);
                           positionSelection.y = (l * TAILLE_CASE);
                           SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
                           SDL_BlitSurface(fond, NULL, ecran, &position);
                           if(tableau[k][l] != 5)
                           {
                               if(tableau[k][l] != VIDE)
                                  SDL_BlitSurface(selection, NULL, ecran, &positionSelection);
                           }
                            for(i = 0; i < NB_CASE_HAUTEUR; i++)
                            {
                                for(j = 0; j < NB_CASE_LARGEUR; j++)
                                {
                                     positionPion.x = i * TAILLE_CASE;
                                     positionPion.y = j * TAILLE_CASE;

                                    switch(tableau[i][j])
                                   {
                                       case VIDE:
                                          break;
                                       case PION_B:
                                          SDL_BlitSurface(pionBlanc, NULL, ecran, &positionPion);
                                          break;
                                       case PION_N:
                                          SDL_BlitSurface(pionNoir, NULL, ecran, &positionPion);
                                          break;
                                   }
                                }
                             }
                           SDL_Flip(ecran);
                        }

                    clic = 1;

                    while(clic)
                    {

                    SDL_WaitEvent(&event);
                    switch(event.type)
                    {
                        case SDL_MOUSEBUTTONUP:
                            switch(event.button.button)
                            {
                                case SDL_BUTTON_LEFT:
                                m = event.button.x / TAILLE_CASE;
                                n = event.button.y / TAILLE_CASE;
                                 if(tableau[k][l] == tableau[m][n])
                                 {
                                     blitPas = 0;
                                     clic = 0;
                                 }
                                 if(tableau[m][n] == 5)
                                {
                                    blitPas = 0;
                                    clic = 0;
                                }
                                if(tableau[m][n] == VIDE)
                                {
                                    tableau[m][n] = typePion;
                                    if(tableau[m][n] == tableau[k][l])
                                    {
                                        tableau[k][l] = typePion;
                                    }
                                    tableau[k][l] = VIDE;
                                    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
                           SDL_BlitSurface(fond, NULL, ecran, &position);
                          //if(tableau[k][l] != 5)
                          //{
                              //if(tableau[k][l] != VIDE)
                              if(blitPas)
                                SDL_BlitSurface(selection, NULL, ecran, &positionSelection);
                         // }
                            for(i = 0; i < NB_CASE_HAUTEUR; i++)
                            {
                                for(j = 0; j < NB_CASE_LARGEUR; j++)
                                {
                                     positionPion.x = i * TAILLE_CASE;
                                     positionPion.y = j * TAILLE_CASE;

                                    switch(tableau[i][j])
                                   {
                                       case VIDE:
                                          break;
                                       case PION_B:
                                          SDL_BlitSurface(pionBlanc, NULL, ecran, &positionPion);
                                          break;
                                       case PION_N:
                                          SDL_BlitSurface(pionNoir, NULL, ecran, &positionPion);
                                          break;
                                   }
                                }
                             }
                               SDL_Flip(ecran);
                                    clic = 0;
                                }
                            }
                            break;
                    }
                    }
                    }


                    //deplacerPion();

                    break;
            }
            break;
    }

    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
    SDL_BlitSurface(fond, NULL, ecran, &position);
    if(tableau[k][l] != 5)
    {
        if(tableau[k][l] != VIDE)
        {
            SDL_BlitSurface(selection, NULL, ecran, &positionSelection);
        }
    }

    plusDePionsBlanc = 0;
    plusDePionsNoir = 0;

    for(i = 0; i < NB_CASE_HAUTEUR; i++)
    {
        for(j = 0; j < NB_CASE_LARGEUR; j++)
        {
            positionPion.x = i * TAILLE_CASE;
            positionPion.y = j * TAILLE_CASE;

            switch(tableau[i][j])
            {
                case VIDE:
                   break;
                case PION_B:
                   SDL_BlitSurface(pionBlanc, NULL, ecran, &positionPion);
                   break;
                case PION_N:
                   SDL_BlitSurface(pionNoir, NULL, ecran, &positionPion);
                   break;
            }
        }
    }

    SDL_Flip(ecran);

    }

    SDL_FreeSurface(fond);
    SDL_FreeSurface(pionBlanc);
    SDL_FreeSurface(pionNoir);
    SDL_FreeSurface(selection);
}

mardi 27 novembre 2007 à 21:47:13 | Re : SDL

SAKingdom

Membre Club
Jette un coup d'oeil sur ce topic. Peut-être explique t-il ton problème:
http://forum.games-creators.org/archive/index.php/t-1986.html

C++ (@++)

mardi 27 novembre 2007 à 21:48:57 | Re : SDL

SAKingdom

Membre Club
Regarde à la fin du topic.

C++ (@++)

mardi 11 décembre 2007 à 14:33:25 | Re : SDL

lushkah

merci


Cette discussion est classée dans : ecran, tableau, case, sdl, positionpion


Répondre à ce message

Sujets en rapport avec ce message

SDL porbleme [ par fahdovski ] IL Y'A EXECUTION MAIS LE PC PLANTE IL DEVIENT TRES LENT, MAIS POURQUOI??????jE TRAVAILLE SUR CODE::BLOCKS SOUS LINUXAVANT CA MARCHAIS IMPEC QUESQUI C' Problème sur un programme en cours [ par LyoNell ] Bonjour tout le monde !! Je suis en Terminal S-Si ET notre professeur d'éléctronique nous à donnez un travail à faire pendant le week-end. Il a pris u importation image en SDL [ par Richard94 ] Bonjour, voila j'ai un petit probleme en SDL, j'essaye d'importer une image format "xcf" en faisant IMG_load sous codeblocks, mais ça ne marche pas. P [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 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 pour que mes touches soient détectées immédiatement [ par snake57 ] Bonjour,j'ai un petit soucis avec la détection de touche. Je vous met le bout de code concerné plus bas pour que vous ayez une idée.Enfait je détecte 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 scanner un code barre [ par ankou001 ] Bonjour; j'aimerai scanner un code barre avec une douchette et le mettre directement dans une case d'un tableau sans etre obligé de sélèctionner ma ca Deplacement de plusieurs sprites à l'écran (SDL) [ par rasolofomanana ] Bonjour à tous, je débute en C et j'essaie de créer un programme où l'on peut déplacer plusieurs sprites à l'écran, par cases de 40px. Le problème es


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,858 sec (4)

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