Débutant puissance 4

Discutez d'informatique ici !
Anonyme

débutant puissance 4

par Anonyme » 03 Juin 2012, 17:33

bonjour


je débute pour la programmation en C et je souhaiterai faire un programme du jeu puissance 4 joueur vs ordinateur

j'ai trouvé un programme sur le net mais je n'arrive pas à l'utilisé pour faire le mien car il n y a pas de commentaire

merci d'avance pour se qui peuvent m'aidé







#include
#include
#include
#include
void dessine(int *tableau);
int jeton (int colonne,int *tableau);
int verifgagnant(int *tableau,int a);
int ordi(int *tableau,int *colpleine);
int otejeton (int colonne,int *tableau);

int main(void)
{
int rejouez=1;
while (rejouez==1)
{
char joueur1[100];
char joueur2[100]="l'ordinateur";
char joueurgagnant[100];
int gagnant=0,i,j,tour=1,colonne,ligneremplie,mode,nbcoups=0;
int colpleine[8]={0};
srand(time(NULL));
const long MAX = 7, MIN = 1,MAX2=2;


printf("\t\t\t ****PUISSANCE 4****\n\n");
printf("Choisissez le mode: tapez 1 pour jouer contre l ordi\n");
printf("ou une autre touche pour jouer entre humain\n");
scanf("%d",&mode);

printf("Entrer le prenom du joueur 1: ");
scanf("%s",joueur1);
if (mode!=1)
{joueur2[0]='\0';
printf("Entrer le prenom du joueur 2: ");
scanf("%s",joueur2);}
dessine(*tableau);
tour=(rand() % (MAX2 - MIN + 1)) + MIN; // hasard pour le 1er a jouer.
while(gagnant==0)
{
nbcoups=nbcoups+1;
if (tour==3)
{tour=1;}
if (tour==1)
{printf(" Au tour de %s de jouer: choisissez la colonne ou placer le pion.\n",joueur1);}
if (tour==2)
{printf(" Au tour de %s de jouer: ",joueur2);}
if (mode!=1){printf("choisissez la colonne ou placer le pion.\n");}
else printf("\n");
if (tour==2 && mode==1)
{
// colonne=ordi(*tableau,*colpleine);
}
else
{scanf("%d",&colonne);}

if(colonne<1 || colonne>7){printf("valeur incorrecte: rentrez un chiffre entre 1 et 7\n");}
else if (colpleine[colonne]==6)
{printf(" ###Colonne pleine, choisissez en une autre.###\n");}

else
{
ligneremplie=jeton(colonne,*tableau);
tableau[ligneremplie][colonne]=tour;
// on repere les pions par colonnes pour empecher de jouer qd elles sont pleines
colpleine[colonne]=colpleine[colonne]+1;
gagnant=verifgagnant(*tableau,tour);
dessine(*tableau);

printf("%d",*colpleine);

if (gagnant==1)
{if (tour==1)
{strcpy(joueurgagnant,joueur1);}
else if (tour==2)
{strcpy(joueurgagnant,joueur2);}

printf("Victoire pour %s en %d coups. Bravo a lui!!:\n",joueurgagnant,nbcoups);
}
tour=tour+1;
}
}

printf(" Souhaitez-vous rejouez? Si oui tapez 1.\n");
scanf("%d",&rejouez);
}
printf(" Merci d avoir jouer a PUISSANCE 4 \n\n");
system("PAUSE");
return 0;
}


void dessine(int *tableau)
{}//ca ca marche je l enleve ca fera moin long^^

int jeton (int colonne,int *tableau)
{int i=1,place=0;
while (place==0 && i<7)
{if (tableau[7*i+colonne]==1 || tableau[7*i+colonne]==2)
{place=i-1;}
i=i+1;}
if (place==0){place=6;}
return place;
}
int otejeton (int colonne,int *tableau)
{int i=6,ligneavider=0;
while (i>0 && ligneavider==0)
{if (tableau[7*i+colonne]==0 )
{i=i-1;}
else{ligneavider=i;}
}

return ligneavider;
}

int verifgagnant(int *tableau,int a)
{
return result; //pareil je resume
}

int ordi(int *tableau,int *colpleine)
{
int valeur,colonne,ligneremplie,temp;
int i,j,k,l,m;
int tab[7][7][7][7][7]={0};
int grille[7][8], colpleinebis={0};
const long MAX = 7, MIN = 1,MAX2=2;
// on copie les tableaux pour pas les changer et les perdre
for (i=1;i<7;i++)
{for (j=1;j<7;j++)
{grille[i][j]=tableau[7*i+j];}
// colpleinebis[i]=*colpleine;
}
// a partir de la grille actuelle: trouver ttes les dispositions possibles sur les 5 coups a venir et les evaluer .
for (i=1;i<7;i++) // coup 1: l ordi
{if (colpleine[i]=!6)
{ligneremplie=jeton(i,*grille);
grille[ligneremplie][i]=2;
if(verifgagnant(*grille,2)==1)
{tab[i][0][0][0][0]=1000;}
else // si pas gagnant coup 2: l humain
{for (j=1;j<7;i++)
{if (colpleine[j]=!6)
{ligneremplie=jeton(j,*grille);
grille[ligneremplie][j]=1;
if(verifgagnant(*grille,1)==1)
{tab[i][0][0][0][0]=-100;}
else //si pas perdant coup 3:l ordi
{for (k=1;k<7;k++)
{if (colpleine[k]=!6)
{ligneremplie=jeton(k,*grille);
grille[ligneremplie][k]=2;
if(verifgagnant(*grille,2)==1)
{tab[i][j][k][0][0]=10;}
else // si pas gagnant coup 4:l humain
{for (l=1;l<7;l++)
{if (colpleine[k]=!6)
{ligneremplie=jeton(k,*grille);
grille[ligneremplie][k]=1;
if(verifgagnant(*grille,1)==1)
{tab[i][j][k][l][0]=-9;}
else //si pas perdant coup 5:l ordi
{for (m=1;m<7;m++)
{if(colpleine[m]=!6 {ligneremplie=jeton(m,*grille);
grille[ligneremplie][m]=2;
if(verifgagnant(*grille,2)==1)
{tab[i][j][k][l][m]=5;}
else
tab[i][j][k][l][m]=1;} otejeton(m,*grille);
}} }
otejeton(l,*grille);
} } }
otejeton(k,*grille);
} } }
otejeton(j,*grille);
} }}
otejeton(i,*grille);
}
// et maintenant on redescend les donnees!!
temp=0;
for (i=1;i<7;i++)
{for (j=1;j<7;i++)
{for (k=1;k<7;k++)
{for (l=1;l<7;l++)
{for (m=1;m<7;m++)
{tab[i][j][k][l][0]=tab[i][j][k][l][0]+tab[i][j][k][l][m];}
tab[i][j][k][0][0]=tab[i][j][k][0][0]+tab[i][j][k][l][0];}
tab[i][j][0][0][0]=tab[i][j][0][0][0]+tab[i][j][k][0][0];}
tab[i][0][0][0][0]=tab[i][0][0][0][0]+tab[i][j][0][0][0];}
if(tab[i][0][0][0][0]>temp){temp=tab[i][0][0][0][0],colonne=i;}
else if (tab[i][0][0][0][0]==temp) // si egalite on prend au pif
{valeur=(rand() % (MAX2 - MIN + 1)) + MIN;
if((valeur/2)*2==valeur){temp=tab[i][0][0][0][0],colonne=i;}}
}
scanf("%d",&temp);
return colonne;

} int tableau[8][7]={0};



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 03 Juin 2012, 17:44

salut,

et tu attends quoi de nous?
la vie est une fête :)

Anonyme

par Anonyme » 03 Juin 2012, 17:47

des petites indications des démarches qui me pourront être utile


sur mon programme je suis arrivé jusqu'à affiché le tableau mais je ne vois pas comment avancer plus

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 03 Juin 2012, 17:52

ben ca sert à rien, si t'arrives pas à lire le code, code ton programme toi même (ca t'évites de perdre du temps pour rien)
la vie est une fête :)

Anonyme

par Anonyme » 03 Juin 2012, 19:22

d'accord et vous me conseiller quoi ?

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 03 Juin 2012, 19:27

commence par essayer de faire une fonction qui affiche le jeu.

tu stockes un tableau de tableau de char (chaque case contiendra un espace blanc, un 'J' (pour jaune') ou un 'R' pour rouge). A toi de voir combien t'as besoin de ligne et de colonnes...

après tu remplies ton tableau et tu vérifies que ta fonction affiche bien ce que tu voulais.
la vie est une fête :)

Joker62
Membre Transcendant
Messages: 5027
Enregistré le: 24 Déc 2006, 19:29

par Joker62 » 04 Juin 2012, 17:49

C'est vrai que ça sera toujours mieux que ce gros torchon pas beau !

Un tableau à 5 dimensions !!!

On aura tout vu lol

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite