RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 [c][SDL]Probleme jeu de dames

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
gottfried
Nouveau membre
Inscrit : 11/08/2007
Messages : 2
Message
#140549
Posté le 11/08/07 à 14:51
Bonjour,
Je suis en train de programmer un jeu de dames avec la SDL , mais j'ai rencontre un probleme assez coriace ( je cherche depuis 3 jours ) , tout d'abord un shema de la grille
_________________
0 1 2 3 4 5 6 7
0| | | | | | | | |
----------------------
1| | | | | | | | |
----------------------
2| | | | | | | | |
----------------------
3| | | | | | | | |
----------------------
4| | | | | | | | |
----------------------
5| | | | | | | | |
----------------------
6| | | | | | | | |
----------------------
7| | | | | | | | |
----------------------

Voici mon probleme : Si je place un pion blanc sur la case (0;7) , un pion blanc va aussi apparaître sur la case (1;0) , ou si je place un noir sur (3;0) , un noir va apparaître sur (2;7).Mais cela seulement sur les lignes 7 et 0 (les deux extremitees.Si vous voulez voir un appercu de ce que cela donne , voius pouvez vous rendre sur mon site (minable mais c'est juste pour mettre mes programmes) : http://gottfried.ifrance.com/exe.html (tout en bas).
L'erreure ne peut venir que du main.cpp ou de ma fonction blitter je pense puisque lors du chargmenent de la carte(avant d'appeler verifier) il y a deja le bug.

voici mon code source :

main.cpp:

/// fonction principale : la ou se deroule les actions principales /// et la ou les appels des fonctions se font #include <SDL/SDL.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include "verifier.h" #include "blitter.h" #include "constantes.h" int main(int argc,char **argv) { FILE *file; file = fopen("temps.txt","a"); time_t t; time_t t1, t2; time(&t); fprintf(file,"\n\ntemps de jeu du jour : %s\n", ctime(&t)); SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetIcon(SDL_LoadBMP("icone.bmp"), NULL); SDL_Surface *Blancs = NULL,*Noirs = NULL,*screen = NULL,*carte = NULL,*presentation,*joueur1,*joueur2; SDL_Surface *victoireJ1,*victoireJ2; SDL_Rect positionGrille,posPres,posJoueur; posJoueur.x = 200; posJoueur.y = 280; posPres.x = 640; posPres.y=0; positionGrille.x = 0; positionGrille.y = 0; SDL_Event event; SDL_WM_SetCaption("Jeu de dames by gottfried",NULL); screen = SDL_SetVideoMode(940,740,32,SDL_HWSURFACE); Blancs = SDL_LoadBMP("pions_blancs.bmp"); victoireJ1 = SDL_LoadBMP("victoireJ1.bmp"); victoireJ2 = SDL_LoadBMP("victoireJ2.bmp"); joueur1 = SDL_LoadBMP("joueur1.bmp"); joueur2 = SDL_LoadBMP("joueur2.bmp"); Noirs = SDL_LoadBMP("pions_noirs.bmp"); presentation = SDL_LoadBMP("presentation.bmp"); carte = SDL_LoadBMP("grilleJeuDames.bmp"); int grille[7][7]; int pointsJ1 = 12,pointsJ2 = 12; for(int j = 0;j<=7;j++) { for(int i=0;i<=7;i++) { grille[i][j] = VIDE; } } int joueur = JOUEUR1; int continuer = 1; int pX,pY; int etat; /// 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][5] = BLANCS; grille[2][5] = BLANCS; grille[4][5] = BLANCS; grille[6][5] = BLANCS; grille[1][6] = BLANCS; grille[3][6] = BLANCS; grille[5][6] = BLANCS; grille[7][6] = BLANCS; grille[0][7] = BLANCS; grille[2][7] = BLANCS; grille[4][7] = BLANCS; grille[6][7] = BLANCS; blitter(grille,Blancs,Noirs,carte,screen); SDL_BlitSurface(presentation,NULL,screen,&posPres); SDL_Flip(screen); SDL_SetColorKey(joueur1, SDL_SRCCOLORKEY, SDL_MapRGB(joueur1->format, 255, 255, 255)); SDL_SetColorKey(joueur2, SDL_SRCCOLORKEY, SDL_MapRGB(joueur2->format, 255, 255, 255)); while(pointsJ1,pointsJ2) { blitter(grille,Blancs,Noirs,carte,screen); t1 = time(NULL); debut:; SDL_WaitEvent(&event); switch(event.type) { case SDL_MOUSEBUTTONUP: if (event.button.button == SDL_BUTTON_LEFT) { pX = event.button.x / 80; pY = event.button.y / 80; } else goto debut; break; case SDL_KEYDOWN: return EXIT_SUCCESS; default :goto debut; break; } deb:; SDL_WaitEvent(&event); switch(event.type) { case SDL_MOUSEBUTTONUP: switch(event.button.button) { case SDL_BUTTON_LEFT: etat = verifier_possibilitees(joueur,pX,pY,&grille,GAUCHE,&pointsJ1,&pointsJ2); if(etat == ERROR) goto debut; break; case SDL_BUTTON_RIGHT: etat = verifier_possibilitees(joueur,pX,pY,&grille,DROITE,&pointsJ1,&pointsJ2); if(etat == ERROR) goto debut; break; default :goto deb; break; } break; default :goto deb; break; } t2 = time(NULL); if(joueur == JOUEUR1) { SDL_BlitSurface(joueur2,NULL,screen,&posJoueur); SDL_Flip(screen); SDL_Delay(1000); fprintf(file,"temps de jeu du joueur 1 : %lf\nnombres de pions du joueur 1 : %d\nnombres de pion du joueur 2 : %d\n\n",difftime(t2, t1),pointsJ1,pointsJ2); joueur = JOUEUR2; } else if(joueur == JOUEUR2) { SDL_BlitSurface(joueur1,NULL,screen,&posJoueur); SDL_Flip(screen); SDL_Delay(1000); fprintf(file,"temps de jeu du joueur 2 : %lf\nnombres de pions du joueur 1 : %d\nnombres de pion du joueur 2 : %d\n\n",difftime(t2, t1),pointsJ1,pointsJ2); joueur = JOUEUR1; } } //while if(pointsJ1 == 0) { SDL_BlitSurface(victoireJ2,NULL,screen,&positionGrille); SDL_Flip(screen); SDL_Delay(2000); fprintf(file,"joueur 2 gagne\nnombre de pions restants au joueur adverse : %d ",pointsJ2); return EXIT_SUCCESS; } if(pointsJ2 == 0) { SDL_BlitSurface(victoireJ1,NULL,screen,&positionGrille); SDL_Flip(screen); SDL_Delay(2000); fprintf(file,"joueur 1 gagne\nnombre de pions restants au joueur adverse : %d ",pointsJ1); return EXIT_SUCCESS; } }


blitter.cpp

///Fonction blitter : sert a transformer le tableau theorique en graphique #include <SDL/SDL.h> #include "constantes.h" void blitter(int GrilleJeu[7][7],SDL_Surface* pion_blanc,SDL_Surface *pion_noir,SDL_Surface *Jeu,SDL_Surface *ecran) { SDL_Rect positionPion,posGrille; posGrille.x = 0; posGrille.y = 0; positionPion.x = 0; positionPion.y = 0; SDL_BlitSurface(Jeu,NULL,ecran,&posGrille); 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] == NOIRS) SDL_BlitSurface(pion_noir,NULL,ecran,&positionPion); else if(GrilleJeu[i][j] == BLANCS) SDL_BlitSurface(pion_blanc,NULL,ecran,&positionPion); } } SDL_Flip(ecran); }


verifier.cpp:

///fonction verifier : comme son nom l'indique elle sert ///a verifier si il y a souffler ,ou si on peut jouer ou manger #include <SDL/SDL.h> #include "constantes.h" int verifier_possibilitees(int joueur,int position_joueurX,int position_joueurY,int (*Grille)[7][7],int mVt,int (*ptsJ1),int (*ptsJ2)) { if(joueur == JOUEUR1) { if((*Grille)[position_joueurX][position_joueurY] != BLANCS) return ERROR; 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; (*ptsJ2)-1; } else 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; (*ptsJ2)-1; } else 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; } else 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; } for(int j = 0;j<=7;j++) { for(int i=0;i<=7;i++) { if((*Grille)[i][j] == BLANCS) { /// DROITE if(((*Grille)[i+1][j-1] == NOIRS)&&((*Grille[i+2][j-2] == VIDE))) { /// si le joueur n'a pas selectionner le pion qui peuut manger , ///le pion qui pouvait supprimer un blanc a ete supprime if((position_joueurX != i)&&(position_joueurY != j)) { (*Grille)[i][j] = VIDE; (*ptsJ1)-1; } ///si le joueur a selectionne le bon pion mais n'a pas entre la bonne direction , idem else if((position_joueurX == i)&&(position_joueurY == j)&&(mVt == GAUCHE)) { (*Grille)[i][j] = VIDE; (*ptsJ1)-1; } } ///GAUCHE else if(((*Grille)[i-1][j-1] == NOIRS)&&((*Grille[i-2][j-2] == VIDE))) { if((position_joueurX != i)&&(position_joueurY != j)) { (*Grille)[i][j] = VIDE; (*ptsJ1)-1; } else if((position_joueurX == i)&&(position_joueurY == j)&&(mVt == DROITE)) { (*Grille)[i][j] = VIDE; (*ptsJ1)-1; } } } } } } else if(joueur == JOUEUR2) { if((*Grille)[position_joueurX][position_joueurY] != NOIRS) { return ERROR; } 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; (*ptsJ1)-1; } else 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; (*ptsJ1)-1; } else 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; } else 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; } for(int j = 0;j<=7;j++) { for(int i=0;i<=7;i++) { if((*Grille)[i][j] == NOIRS) { /// si le joueur n'a pas selectionner le pion qui peuut manger , ///le pion qui pouvait supprimer un blanc a ete supprime if(((*Grille)[i+1][j+1] == BLANCS)&&((*Grille[i+2][j+2] == VIDE))) { if((position_joueurX != i)&&(position_joueurY != j)) { (*Grille)[i][j] = VIDE; (*ptsJ2)-1; } ///si le joueur a selectionne le bon pion mais n'a pas entre la bonne direction , idem else if((position_joueurX == i)&&(position_joueurY == j)&&(mVt == GAUCHE)) { (*Grille)[i][j] = VIDE; ( *ptsJ2)-1; } } else if(((*Grille)[i-1][j+1] == BLANCS)&&((*Grille[i-2][j+2] == VIDE))) { if((position_joueurX != i)&&(position_joueurY != j)) { (*Grille)[i][j] = VIDE; (*ptsJ2)-1; } else if((position_joueurX == i)&&(position_joueurY == j)&&(mVt == DROITE)) { (*Grille)[i][j] = VIDE; (*ptsJ2)-1; } } } } } } }


constantes.h:

#define NOIRS 100 #define BLANCS 200 #define VIDE 440 #define GAUCHE 7000 #define DROITE 8000 #define JOUEUR1 1000 #define JOUEUR2 2000 #define ERROR 8




Merci d'avance

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 995
Message
#140558
Posté le 11/08/07 à 18:02
j'ai regardé rapidement ton main.cpp et déjà quelque chose m'a choqué : quand on crée un tableau montableau[n] les cases vont de 0 à n-1 compris. et tu mets:

int grille[7][7]; for(int j = 0;j<=7;j++) { for(int i=0;i<=7;i++) { grille[i][j] = VIDE; } } ... grille[7][2] = NOIRS; //etc

corrige tout d'abord ceci et ensuite regarde si ton problème persiste.

ciao

rainbow
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

gottfried
Nouveau membre
Inscrit : 11/08/2007
Messages : 2
Message
#140569
Posté le 11/08/07 à 19:48
Merci , j'oublie toujours ca , pourtant c'est pas la premiere fois que je fais un jeu avec un tableau...

EDIT:l'erreure venait bien de la

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 995
Message
#140578
Posté le 11/08/07 à 20:51
aucun dit :
Merci , j'oublie toujours ca , pourtant c'est pas la premiere fois que je fais un jeu avec un tableau...

Ce n'est pas grave, par l'expérience tu ne pensera même plus à accéder au Nème élément d'un tableau[n] Smiley

aucun dit :
EDIT:l'erreure venait bien de la

A bientôt sur MP alors Smiley
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

fatma_87
Membre MP
Avatar de fatma_87
Inscrit : 14/02/2007
Messages : 217
Message
#141427
Posté le 22/08/07 à 17:50
salut a tous
"c'est quoi SDL?"Smiley
__________________________
il faut être patient et ambitieux

never give up , let the challenge your way to live

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 485
Message
#141450
Posté le 22/08/07 à 19:27
Une librarie pour crée des jeux...
je crois que SDL veut dire: "Software Delvellopement Library"

corriger moi si je me trompe...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2554
Message
#141459
Posté le 22/08/07 à 20:00
Simple Directmedia Layer ... Bien essayé ;)
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 995
Message
#141467
Posté le 22/08/07 à 20:26
Aucun dit :
Une librarie pour crée des jeux...

Pas uniquement ! C'est une librairie pour créer des programmes C/C++ graphiques.
Un petit lien d'explication

ciao

rainbow
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

fatma_87
Membre MP
Avatar de fatma_87
Inscrit : 14/02/2007
Messages : 217
Message
#141530
Posté le 23/08/07 à 13:25
comment peut on la telecharger et comment l'utiliser et l'exploiter?
__________________________
il faut être patient et ambitieux

never give up , let the challenge your way to live

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 995
Message
#141531
Posté le 23/08/07 à 13:56
Aucun dit :
comment peut on la telecharger et comment l'utiliser et l'exploiter?

Il y a des liens dans le lien ci-dessus. sinon, un petit coup de google(économique au passage ;)) te fournira tout ce que tu désires.
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGES : [1] [2]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.