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

C

 > 

Divers

 > 

Débutant(e)

 > 

[SDL]Un jeu de dames , le jeu se ferme tout seul


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

[SDL]Un jeu de dames , le jeu se ferme tout seul

mercredi 8 août 2007 à 13:54:40 | [SDL]Un jeu de dames , le jeu se ferme tout seul

gottfried852

Bonjour,

Je suis en train de faire un jeu de dames en C , avec la SDL.

Mais lorsque je lance mon programme , et que j'entre les coordonnees du pion a deplacer, le programme se ferme automatiquement .

Pour jouer il faut mettre les coordonnees du pion :

0 1 2 3 4 5 6 7

1

2

3

4

5

6

7

puis mettre la direction ou vous voulez faire bouger le pion...

voici le code :
#include <SDL/SDL.h>


#define NOIRS  100
#define BLANCS 200
#define VIDE   440

#define GAUCHE 7000
#define DROITE 8000

#define JOUEUR1 1000
#define JOUEUR2 2000

#define OK     60000
#define ERROR  70000
#define MANGER 80000

 

void blitter(int GrilleJeu[7][7],SDL_Surface* pion_blanc,SDL_Surface *pion_noir,SDL_Surface *Jeu,SDL_Surface *ecran);
int verifier_possibilitees(int joueur,int position_joueurX,int position_joueurY,int Grille[7][7],int mVt);

 

 

void blitter(int GrilleJeu[7][7],SDL_Surface* pion_blanc,SDL_Surface *pion_noir,SDL_Surface *Jeu,SDL_Surface *ecran)
{
     SDL_Rect positionPion;
     positionPion.x = 0;
     positionPion.y = 0;
     for(int j = 0;j<=7;j++)
     {
          for(int i = 0;i<=7;i++)
          {
                 positionPion.x = i * 80;
                 positionPion.y = j * 80;
                 if(GrilleJeu[i][j] == BLANCS)
                    SDL_BlitSurface(pion_blanc,NULL,ecran,&positionPion);
                 else if(GrilleJeu[i][j] == NOIRS)
                    SDL_BlitSurface(pion_noir,NULL,ecran,&positionPion);
                    SDL_Flip(ecran);
          }

     }

}
int verifier_possibilitees(int joueur,int position_joueurX,int position_joueurY,int Grille[7][7],int mVt)
{
   if(joueur == JOUEUR1)
   {
       if((Grille[position_joueurX-1][position_joueurY-1] =! VIDE) &&(mVt == GAUCHE)&&(Grille[position_joueurX-2][position_joueurY-2] =! VIDE))
                return Grille[7][7];
       if((Grille[position_joueurX+1][position_joueurY-1] =! VIDE) && (mVt == DROITE) && (Grille[position_joueurX+2][position_joueurY-2] != VIDE))
                return Grille[7][7];
       if((Grille[position_joueurX+1][position_joueurY-1] == NOIRS) &&(mVt == DROITE)&&(Grille[position_joueurX+2][position_joueurY-2] == VIDE))
       {
                Grille[position_joueurX][position_joueurY] = VIDE;
                Grille[position_joueurX+1][position_joueurY-1] = VIDE;
                Grille[position_joueurX+2][position_joueurY-2]= BLANCS;
                return Grille[7][7];
       }
       if((Grille[position_joueurX-1][position_joueurY-1] == NOIRS) &&(mVt == GAUCHE)&&(Grille[position_joueurX-2][position_joueurY-2] == VIDE))
       {

                Grille[position_joueurX][position_joueurY] = VIDE;
                Grille[position_joueurX-1][position_joueurY-1] = VIDE;
                Grille[position_joueurX-2][position_joueurY-2]= BLANCS;
                return Grille[7][7];
       }
       if((Grille[position_joueurX-1][position_joueurY-1] == VIDE)&&(mVt == GAUCHE))
       {
               Grille[position_joueurX][position_joueurY] = VIDE;
               Grille[position_joueurX-1][position_joueurY-1] = BLANCS;
               return Grille[7][7];
       }
       if((Grille[position_joueurX+1][position_joueurY-1] == VIDE)&&(mVt == DROITE))
       {
               Grille[position_joueurX+1][position_joueurY-1] = BLANCS;
               Grille[position_joueurX][position_joueurY] = VIDE;
               return Grille[7][7];
       }

   }
   if(joueur == JOUEUR2)
   {
       if((Grille[position_joueurX-1][position_joueurY+1] =! VIDE) &&(mVt == GAUCHE)&&(Grille[position_joueurX-2][position_joueurY+2] =! VIDE))
                return Grille[7][7];
       if((Grille[position_joueurX+1][position_joueurY+1] =! VIDE) && (mVt == DROITE) && (Grille[position_joueurX+2][position_joueurY+2] != VIDE))
                return Grille[7][7];
       if((Grille[position_joueurX+1][position_joueurY+1] == BLANCS) &&(mVt == DROITE)&&(Grille[position_joueurX+2][position_joueurY+2] == VIDE))
       {
                Grille[position_joueurX][position_joueurY] = VIDE;
                Grille[position_joueurX+1][position_joueurY+1] = VIDE;
                Grille[position_joueurX+2][position_joueurY-2]= NOIRS;
                return Grille[7][7];
       }
       if((Grille[position_joueurX-1][position_joueurY+1] == BLANCS) &&(mVt == GAUCHE)&&(Grille[position_joueurX-2][position_joueurY+2] == VIDE))
       {
                Grille[position_joueurX-1][position_joueurY+1] = VIDE;
                Grille[position_joueurX][position_joueurY] = VIDE;
                Grille[position_joueurX-2][position_joueurY+2]= NOIRS;
                return Grille[7][7];
       }
       if((Grille[position_joueurX-1][position_joueurY+1] == VIDE)&&(mVt == GAUCHE))
       {
        Grille[position_joueurX][position_joueurY] = VIDE;
         Grille[position_joueurX-1][position_joueurY+1] = NOIRS;
         return Grille[7][7];
       }
       if((Grille[position_joueurX+1][position_joueurY+1] == VIDE)&&(mVt == DROITE))
       {
               Grille[position_joueurX+1][position_joueurY+1] = NOIRS;
               Grille[position_joueurX][position_joueurY] = VIDE;
               return Grille[7][7];
       }
   }

}
int main(int argc,char **argv)
{

   SDL_Init(SDL_INIT_VIDEO);
   SDL_Surface *Blancs = NULL,*Noirs = NULL,*screen = NULL,*carte = NULL;
   SDL_Rect positionGrille;
   positionGrille.x = 0;
   positionGrille.y = 0;
   SDL_Event event;
   SDL_WM_SetCaption("Jeu de dames by gottfried",NULL);
   screen = SDL_SetVideoMode(640,640,32,SDL_HWSURFACE);
   Blancs = SDL_LoadBMP("pions_blancs.bmp");
   Noirs = SDL_LoadBMP("pions_noirs.bmp");
   carte = SDL_LoadBMP("grilleJeuDames.bmp");
   SDL_BlitSurface(carte,NULL,screen,&positionGrille);
   SDL_Flip(screen);
   int grille[7][7] = {VIDE};
   int joueur = JOUEUR1;
   int continuer  = 1;
   int pX,pY;

   ///            MISE   EN   PLACE   DES   PIONS

   grille[1][0] = NOIRS;
   grille[3][0] = NOIRS;
   grille[5][0] = NOIRS;
   grille[7][0] = NOIRS;
   grille[0][1] = NOIRS;
   grille[2][1] = NOIRS;
   grille[4][1] = NOIRS;
   grille[6][1] = NOIRS;
   grille[1][2] = NOIRS;
   grille[3][2] = NOIRS;
   grille[5][2] = NOIRS;
   grille[7][2] = NOIRS;

   grille[0][7] = BLANCS;
   grille[2][7] = BLANCS;
   grille[4][7] = BLANCS;
   grille[6][7] = BLANCS;
   grille[1][6] = BLANCS;
   grille[3][6] = BLANCS;
   grille[5][6] = BLANCS;
   grille[7][6] = BLANCS;
   grille[0][5] = BLANCS;
   grille[2][5] = BLANCS;
   grille[4][5] = BLANCS;
   grille[6][5] = BLANCS;

   blitter(grille,Blancs,Noirs,carte,screen);

   while(continuer)
   {
      debut:;
      SDL_WaitEvent(&event);
      switch(event.type)
      {
          case SDL_KEYDOWN:
          switch(event.key.keysym.sym)
          {
             case SDLK_0:
             pX = 0;
             break;
            case SDLK_1:
             pX = 1;
             break;
             case SDLK_2:
             pX = 2;
             break;
             case SDLK_3:
             pX = 3;
             break;
             case SDLK_4:
             pX = 4;
             break;
             case SDLK_5:
             pX = 5;
             break;
             case SDLK_6:
             pX = 6;
             break;
             case SDLK_7:
             pX = 7;
             break;
          }
          break;
         default :goto debut;
         break;
      }
      debu :;
      SDL_WaitEvent(&event);
      switch(event.type)
      {
                   case SDL_KEYDOWN:
                   switch(event.key.keysym.sym)
                   {
                       case SDLK_0:
                       pY = 0;
                       break;
                       case SDLK_1:
                       pY = 1;
                       break;
                       case SDLK_2:
                       pY = 2;
                       break;
                       case SDLK_3:
                       pY = 3;
                       break;
                       case SDLK_4:
                       pY = 4;
                       break;
                       case SDLK_5:
                       pY = 5;
                       break;
                       case SDLK_6:
                       pY = 6;
                       break;
                       case SDLK_7:
                       pY = 7;
                       break;
                    }
                    break;
                    default :goto debu;
                    break;
      }
      deb:;
      SDL_WaitEvent(&event);
      switch(event.type)
      {
                   case SDL_KEYDOWN:
                   switch(event.key.keysym.sym)
                   {
                         case SDLK_LEFT:
                         grille[7][7] = verifier_possibilitees(joueur,pX,pY,grille,GAUCHE);
                         break;
                         case SDLK_RIGHT:
                         grille[7][7] = verifier_possibilitees(joueur,pX,pY,grille,DROITE);
                         break;
                   }
                   break;
                   default :goto deb;
                   break;
      }
  SDL_BlitSurface(carte,NULL,screen,&positionGrille);
  SDL_Flip(screen);
  blitter(grille,Blancs,Noirs,carte,screen);
  if(joueur == JOUEUR1)
        joueur = JOUEUR2;
  else if(joueur == JOUEUR2)
       joueur = JOUEUR1;

  }  //while
}

Merci d'avance (P.S:pour le goto j'essaierais le corrgier ca plus tard :))

mercredi 8 août 2007 à 16:26:06 | Re : [SDL]Un jeu de dames , le jeu se ferme tout seul

THEwarrior333

Réponse acceptée !
Pas le temps de regarder le code, mais en général quand ça quitte brusquement comme ça, c'est qu'une erreur de mémoire a été rencontrée. Compile en mode debug et utilises le debugger.

Un clavier Azerty en vaut deux

mercredi 8 août 2007 à 16:31:55 | Re : [SDL]Un jeu de dames , le jeu se ferme tout seul

gottfried852

Merci , je n'ai jamais essayer de me servir du debugger mais je vais me debrouiller
mercredi 8 août 2007 à 21:09:39 | Re : [SDL]Un jeu de dames , le jeu se ferme tout seul

mogwai93

Réponse acceptée !
comme l'a dit THEwarrior333, erreur de mémoire :
int grille[7][7]
grille[7][7] = verifier_possibilitees

--> revoir la déclaration d'un tableau
int Tableau [N]  <=> N éléments de 0 à N-1



Cette discussion est classée dans : grille, position, sdl, joueurx, joueury


Répondre à ce message

Sujets en rapport avec ce message

Position de la souris -SDL- [ par UltimAKnighT ] Bonjour, Je crée un Morpion avec la lib SDL, et je coince sur un probleme, j'aimerai recuperer la position de la souris ( non recuperer la position x Message d'erreur avec SL [ par Maximi ] Bonjour je débute avec C++ et SDL, je travaille avec VC++ 6.J'ai fait un tout petit programme et mon problème, est le suivant :je compile le code et c Probleme avec la SDL [ par neo1012 ] Bonjour, Je suis entrain de faire un jeu en SDL, dedans il y a un personage(poulet) qui est censé avancé quand on appuie sur les fleches directionnel Affichage du texte avec SDL [ par thomas3347 ] Bonjour,Je cherche à afficher un nombre (à l'aide de SDL) à chaque fois qu'une condition est vérifiée : dans mon programme :1) J'affiche la fenêtre et Coordonnes souris en SDL [ par lamiae89 ] Je suis entrain de travailler sur une interface graphique en sdl , pour faire un jeu .Je veux ecrire chaque chiffre là où j'avais cliqué avec la souri 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 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 code tbi [ par malouk6221 ] Bonjour, je suis actuellement en train de créer un long code pour la wiimote qui me permettra de récupérer plusieurs informations: comme l'inclinais [jeu 2d] Snake ,petit bug jeu [ par zakuza ] Bonjour à tous , je suis entrain de m'amuser à programmer un petit snake histoire de pratiquer,bon il ne fonctionne pas trop mal mais j'ai quelques bu Problème SDL : Récupérer la position d'une case d'un tableau (image) ? [ par romain60112 ] SDL : Récupérer la position d'une case d'un tableau (image) ? Bonjours a tous, Je souhaite savoir comment récupérer de façon efficace les coordonnées


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

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