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 :))
Afficher la suite