|
|
|
|
#include "myheader.h"
int i=0,j=0,tab[I][J],cpt,pionsalignesj,pionsaligneso,cpt2;
char gagnant,joueur1,joueur2,nul;
int initialisation (int tab[I][J], int i, int j){
i=0;
j=0;
while (i<=5){
while (j<=6){
tab[i][j]=0;
j++;}
i++;
j=0;
}
return tab[I][J];
}
void imprimegrille (int tab[I][J], int i, int j){
i=0;
j=0;
while (i<=5){
printf("-----------------------------------------\n");
while (j<=6){
printf("| %d | ",tab[i][j]);
j++;}
printf("\n");
i++;
j=0;
}
printf("-----------------------------------------\n");
}
void saisiej (int tab[I][J], int i, int j){
i=5;
j=0;
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
while ((j<0) || (j>6)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
while (tab[i][j]!=0){
while ((i>0)&&(tab[i][j]!=0)){
i--;}
if ((i==0)&&(tab[i][j]!=0)){
i=5;
while ((j<0)||(j>6)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
}
}
tab[i][j]=1;
}
void verifj (int pionsalignesj, int i, int j){
int k=i,l=j,cpt2=1;
while ((tab[k][l]==1)||(l>0)||(cpt2<4)){
l--;
incrcptj();}
gagnantj();
if (cpt2!=0){
l=j;
while ((tab[k][l]==1)||(l<6)||(cpt2<4)){
l++;
incrcptj();}
gagnantj();
if (cpt2!=0){
cpt2=1;
k=i;
while ((tab[k][l]==1)||(k>0)||(cpt2<4)){
k--;
incrcptj();}
gagnantj();
if (cpt2!=0){
k=i;
while ((tab[k][l]==1)||(k<5)||(cpt2<4)){
k++;
incrcptj();}
gagnantj();
if (cpt2!=0){
cpt2=1;
k=i;
l=j;
while ((tab[k][l]==1)||(k>0)||(l>0)){
k--;
l--;
incrcptj();}
gagnantj();
if (cpt2!=0){
k=i;
l=j;
while ((tab[k][l]==1)||(k<5)||(l<6)){
k++;
l++;
incrcptj();}
gagnantj();
if (cpt2!=0){
cpt2=1;
k=i;
l=j;
while ((tab[k][l]==1)||(k>0)||(l<6)){
k--;
l++;
incrcptj();}
gagnantj();
if (cpt2!=0){
k=i;
l=j;
while ((tab[k][l]==1)||(k<5)||(l>0)){
k++;
l--;
incrcptj();}
gagnantj();
}
}
}
}
}
}
}
}
void saisieo (int tab[I][J], int i, int j){
i=5;
j=0;
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
while ((j<0)||(j>6)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
while (tab[i][j]!=0){
while ((i>0)&&(tab[i][j]!=0)){
i--;}
if ((i==0)&&(tab[i][j]!=0)){
i=5;
while ((j<0)||(j>6)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
}
}
tab[i][j]=2;
}
void verifo (int pionsaligneso, int i, int j){
int k=i,l=j,cpt2=1;
while ((tab[k][l]==2)||(l>0)||(cpt2<4)){
l--;
incrcpto();}
gagnanto();
if (cpt2!=0){
l=j;
while ((tab[k][l]==2)||(l<6)||(cpt2<4)){
l++;
incrcpto();}
gagnanto();
if (cpt2!=0){
cpt2=1;
k=i;
while ((tab[k][l]==2)||(k>0)||(cpt2<4)){
k--;
incrcpto();}
gagnanto();
if (cpt2!=0){
k=i;
while ((tab[k][l]==2)||(k<5)||(cpt2<4)){
k++;
incrcpto();}
gagnanto();
if (cpt2!=0){
cpt2=1;
k=i;
l=j;
while ((tab[k][l]==2)||(k>0)||(l>0)){
k--;
l--;
incrcpto();}
gagnanto();
if (cpt2!=0){
k=i;
l=j;
while ((tab[k][l]==2)||(k<5)||(l<6)){
k++;
l++;
incrcpto();}
gagnanto();
if (cpt2!=0){
cpt2=1;
k=i;
l=j;
while ((tab[k][l]==2)||(k>0)||(l<6)){
k--;
l++;
incrcpto();}
gagnanto();
if (cpt2!=0){
k=i;
l=j;
while ((tab[k][l]==2)||(k<5)||(l>0)){
k++;
l--;
incrcpto();}
gagnanto();
}
}
}
}
}
}
}
}
void incrcptj (){
if (tab[i][j]==1)
cpt2=cpt2+1;
}
void gagnantj (){
if (cpt2==4)
pionsalignesj=1;
}
void incrcpto (){
if (tab[i][j]==2)
cpt2=cpt2+1;
}
void gagnanto (){
if (cpt2==4)
pionsaligneso=1;
}
void resultat (char gagnant){
if (pionsalignesj==1)
gagnant=joueur1;
else
if (pionsaligneso==1)
gagnant=joueur2;
else
gagnant=nul;
}
#include "myheader.h"
void main (void){
int i=0,j=0,tab[I][J],cpt,pionsalignesj=0,pionsaligneso=0;
char gagnant,joueur1[30],joueur2[30],nul;
printf("Bienvenue dans le puissance 4\n");
printf("Joueur 1, entrez votre nom\n");
scanf("%s",&joueur1);
printf("Joueur 2, entrez votre nom\n");
scanf("%s",&joueur2);
tab[I][J]=initialisation(tab,i,j);
cpt=0;
while ((cpt<42)||(pionsalignesj==0)||(pionsaligneso==0))
{
imprimegrille(tab,i,j);
saisiej(tab,i,j);
verifj(pionsalignesj,i,j);
saisieo(tab,i,j);
verifo(pionsaligneso,i,j);
cpt=cpt+2;
}
resultat(gagnant);
}
#include <stdio.h> #define I 5 #define J 6 int initialisation (int [I][J], int, int); void imprimegrille (int [I][J], int, int); void saisiej (int [I][J], int, int); void verifj (int, int, int); void saisieo (int [I][J], int, int); void verifo (int, int, int); void resultat (char); void incrcptj (); void incrcpto (); void gagnantj (); void gagnanto ();
Tu crois qu'on va se taper tout ton truc à mater... c'est un peu long franchement... je te conseil de faire un trace de ton programme pour voir exactement à quel endroit et quel moment tu as le débordement de mémoire et quand tu as trouvé tu revient nous voir en nous le disant car la.... j'te dit c'est bien trop long.
++ ~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic et ya pas de bôg môsieu ! ~ |
j'ai pas tout lu mais I et J ne sont pas conformes au 5 et 6 qui trainent dans le code
en C les tableaux c'est de 0 à N exclu, pour tab[N]
#include <stdio.h>
#define I 6
#define J 7
int tableau[I][J];
void imprimegrille (int tab[I][J])
{
int i,j;
for(i=0;i<I;i++)
{
for(j=0;j<J;j++)
printf("+---");
printf("+\n");
for(j=0;j<J;j++)
{
printf("| %d ",tab[i][j]);
}
printf("|\n");
}
for(j=0;j<J;j++)
printf("+---");
printf("+\n");
}
int main(int argc,char **argv)
{
imprimegrille(tableau);
return 0;
}
|
L'erreur se fait à la saisie de la colonne donc ce paragraphe-ci:
void saisiej (int tab[I][J], int i, int j){
i=I-1;
j=0;
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
while ((j<0) || (j>J-1)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
while (tab[i][j]!=0){
while ((i>0)&&(tab[i][j]!=0)){
i--;}
if ((i==0)&&(tab[i][j]!=0)){
i=I-1;
while ((j<0)||(j>J-1)){
printf("Entrer la colonne\n");
scanf("%d",&j);
j--;
}
}
}
tab[i][j]=1;
}
J'ai modifié les define avec 6 et 7 et changer les conditions dans imprimetableau mais bon apparemment, cette fonction allait déjà auparavant. Merci pour votre aide. |
Mon programme va un peu mieux, la saisie fonctionne mais pas la vérification des 4 pions alignés. Voici les entêtes, appels et prototypes des fonctions:
saisie: entête: void saisiej (int tab[I][J]) appel: saisiej(tab); prototype: void saisiej (int [I][J]); vérification: entête: void verifj (int pionsalignesj) appel: verifj(pionsalignesj); prototype: void verifj (int); Donc à la saisie, j'entre la colonne et le programme met 1 dans la case du tableau, ensuite quand je sors de la fonction "saisiej", la valeur de la case se remet à 0 et donc la vérification n'a pas lieu, ke dois-je corriger svp? |
Résultats pour Puissance 4
Résultats pour Puissance 4
Résultats pour Puissance 4
Résultats pour Puissance 4