Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Jeu.cflags
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-std=c17
2 changes: 2 additions & 0 deletions Jeu.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// Add predefined macros for your project here. For example:
// #define THE_ANSWER 42
1 change: 1 addition & 0 deletions Jeu.creator
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[General]
1 change: 1 addition & 0 deletions Jeu.cxxflags
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-std=c99
33 changes: 33 additions & 0 deletions Jeu.files
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
affiche.c
affiche.h
alea.c
alea.h
alea2.c
alea2.h
aleatoire.c
aleatoire.h
init.c
init.h
jeu.c
joueur1_VS_joueur_glouton.c
joueur1_VS_joueur_glouton.h
joueur2_VS_joueur_glouton_prevoyant.c
joueur2_VS_joueur_glouton_prevoyant.h
joueur_1.c
joueur_1.h
joueur_2.c
joueur_2.h
joueur_contre_joueur.c
joueur_contre_joueur.h
joueur_contre_ordinateur.c
joueur_contre_ordinateur.h
joueur_glouton.c
joueur_glouton.h
joueur_glouton_prevoyant.c
joueur_glouton_prevoyant.h
loi_du_plus_fort.c
loi_du_plus_fort.h
loi_du_plus_fort2.c
loi_du_plus_fort2.h
ordinateur.c
ordinateur.h
1 change: 1 addition & 0 deletions Jeu.includes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.
14 changes: 13 additions & 1 deletion affiche.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
# include <stdlib.h>
#include <stdio.h>

/// Fonction qui retourne un char*
char* convertis(int valeurEncodageInterne)
{
char* correspondance[9];
correspondance[0] = "A"; /// "blueAblack";
correspondance[1] = "B"; /// "redBblack";
/// ...
correspondance[8] = "&"; /// "white@black";

return correspondance[valeurEncodageInterne];
}

void affiche(char mondeCarre[30][30], int dim)
{
for(int i =0; i < dim; i++)
{
for(int j=0; j < dim; j++)
{
printf("\033[44m %c ", mondeCarre[i][j]);
printf("\033[44m %c ", convertis( mondeCarre[i][j] ) );
}
printf("\n");
}
Expand Down
2 changes: 1 addition & 1 deletion alea.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include <stdlib.h>
#include <stdbool.h>

char alea (char mondeCarre[30][30], int dim)
char alea (/*char mondeCarre[30][30], int dim*/)
{
/*
Cette fonction permet de choisir de manière aléatoire l'une des 7 couleurs comprises entre A et G
Expand Down
212 changes: 93 additions & 119 deletions alea2.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,130 +8,109 @@
Cette fonction joue un joueur artificiel en choisissant à chaque tour une couleur
aléatoirement mais parmi les couleurs qui peuvent ajouter des cases à sa zone.
*/
void alea2 (char mondeCarre[30][30], int dim , float cpt)

char testcase(char mondeCarre[30][30], int i, int j, char symbol)
{
if ( (j+1 <= 29 && mondeCarre[i][j+1] == symbol )
|| (j-1 >= 0 && mondeCarre[i][j-1] == symbol)
|| (i+1 <= 29 && mondeCarre[i+1][j] == symbol )
|| (i-1 >= 0 && mondeCarre[i-1][j] == symbol) )
return symbol;
return 100;
}

///
/// partie affichage: printf("joueur_alea = %c \n", joueur_alea);
/// partie calcul: score = alea2(mondeCarre, 30, '@')
/// partie affichage: printf("score_joueur_alea = %f\n", score);
/// si on te demande faire une version graphique...
/// => refait que la partie affichage.
int alea2 (char mondeCarre[30][30], int dim , char joueur_alea)
{
char joueur_alea ;
char couleur_aleatoire;
joueur_alea = '@' ;
printf("joueur_alea = %c \n", joueur_alea);

/// ? bizzare ça m'intrigue.
/// taille de 1000... remplis avec 8 valeurs ?
char tab[1000] = {0,0,0,0,0,0,0,0}; // On initialise un tableau dans lequel on stoque les couleurs qui qui peuvent ajouter des cases à la zone du joueur

/// memset(tab, 1000, 0);
int o = 0;
for (int i =0; i<30; i++)

/// Valeur codée en dur, n'utilise pas dim.
for (int i =0; i<30; i++)
{
/// Valeur codée en dur, n'utilise pas dim.
for (int j = 0; j<30; j++)
{
/// Le joueur est il à un ou plusieur endroit ?...
/// Joueur ne peut être qu'à un seule ndroit à la fois (un seul @ sur tout la grille pendant la partie)
/// => tab[8] (on comprend pas tab[1000]... mais on comprend mieux {0,0,0,0,0,0})
/// => il faut un break pour sortir dès qu'on l'a trouvé
/// Joueur peut être à plusieurs endroits (plusieur @ dans toute la grille)
/// => tab[1000] le calcul de la dimmension va pas être facile...
/// => il faut que tu document ton code pour expliquer comment tu as calculé la taille max
/// => nombre de case: dim * dim => tab[1000] <--> tab[dim*dim].
/// => tab[ taille( nombre(@) ) ) ?
if ( mondeCarre[i][j] == joueur_alea )
{
char retcode = testcase(mondeCarre, i, j, joueur_alea);
if(retcode != 100)
tab[o++] = retcode;
}
}
}

srand(time(NULL));

/// Ceci est un commentaire
//ceci est un code commenté (c'est mal de laisser ça sur le dépot => github)
int a = 0;
a = (rand() % (o - 0 )) + 0;
couleur_aleatoire = tab[a];
printf("***** = %d\n ", a);
printf("Le joueur aleatoire a joue %c\n",couleur_aleatoire);

bool changed = true;
while (changed == true )
{
changed = false;
for (int i =0; i<30; i++)
{
for (int j =0; j<30; j++)
{
if ( mondeCarre[i][j] == joueur_alea)
{
if ( j+1 <= 29 && mondeCarre[i][j+1] == couleur_aleatoire)
{
for (int j = 0; j<30; j++)
{
if ( mondeCarre[i][j] == joueur_alea )
{
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'A' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'A') || (i+1 <= 29 && mondeCarre[i+1][j] == 'A' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'A') )
{
tab[o] = 'A';
o ++;
}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'B' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'B') || (i+1 <= 29 && mondeCarre[i+1][j] == 'B' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'B') )
{
tab[o] = 'B' ;
o ++;
}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'C' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'C') || (i+1 <= 29 && mondeCarre[i+1][j] == 'C' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'C') )
{
tab[o] = 'C' ;
o ++;
}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'D' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'D') || (i+1 <= 29 && mondeCarre[i+1][j] == 'D' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'D') )
{
tab[o] = 'D' ;
o ++;
}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'E' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'E') || (i+1 <= 29 && mondeCarre[i+1][j] == 'E' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'E') )
{
tab[o] = 'E';
o ++;

}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'F' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'F') || (i+1 <= 29 && mondeCarre[i+1][j] == 'F' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'F') )
{
tab[o] = 'F';
o ++;
}
if ( (j+1 <= 29 && mondeCarre[i][j+1] == 'G' ) || (j-1 >= 0 && mondeCarre[i][j-1] == 'G') || (i+1 <= 29 && mondeCarre[i+1][j] == 'G' ) || (i-1 >= 0 && mondeCarre[i-1][j] == 'G') )
{
tab[o] = 'G';
o ++;
}

}




}
mondeCarre[i][j+1] = joueur_alea;
changed = changed | true;
}


srand(time(NULL));
//couleur_aleatoire =tab[rand()%o]; // Cette fonction permet choisir aléatoirement une des couleurs qui se trouvent dans la zone du joueur
int a = 0;
a = (rand() % (o - 0 )) + 0;
couleur_aleatoire = tab[a];
printf("***** = %d\n ", a);
// printf("\n");
printf("Le joueur aleatoire a joue %c\n",couleur_aleatoire);


bool changed = true;
//while (getchar()!='\n');
while (changed == true )
{
changed = false;
for (int i =0; i<30; i++)
if ( j-1 >= 0 && mondeCarre[i][j-1] == couleur_aleatoire)
{
mondeCarre[i][j-1] = joueur_alea;
changed = changed | true;

}
if (i-1 >= 0 && mondeCarre[i-1][j] == couleur_aleatoire)
{
for (int j =0; j<30; j++)
{
if ( mondeCarre[i][j] == joueur_alea)
{
if ( j+1 <= 29 && mondeCarre[i][j+1] == couleur_aleatoire)
{
mondeCarre[i][j+1] = joueur_alea;
changed = changed | true;
mondeCarre[i-1][j] = joueur_alea;
changed = changed | true;

}
if ( j-1 >= 0 && mondeCarre[i][j-1] == couleur_aleatoire)
{
mondeCarre[i][j-1] = joueur_alea;
changed = changed | true;

}
if (i-1 >= 0 && mondeCarre[i-1][j] == couleur_aleatoire)
{
mondeCarre[i-1][j] = joueur_alea;
changed = changed | true;

}
if (i+1 <= 29 && mondeCarre[i+1][j] ==couleur_aleatoire)
{
mondeCarre[i+1][j] = joueur_alea;
changed = changed | true;

}
else
{
changed = false;

}



}
}


}
if (i+1 <= 29 && mondeCarre[i+1][j] ==couleur_aleatoire)
{
mondeCarre[i+1][j] = joueur_alea;
changed = changed | true;
}
else
{
changed = false;
}
}
}



}
}


float score_joueur_alea = 0;
int i,j;
for (i=0;i<dim;i++)
Expand All @@ -142,10 +121,5 @@ void alea2 (char mondeCarre[30][30], int dim , float cpt)
}
}
score_joueur_alea = (score_joueur_alea/900)*100;
printf("score_joueur_alea = %f\n", score_joueur_alea);





return score_joueur_alea;
}
2 changes: 2 additions & 0 deletions alea2.h
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/// alea2 => nom pas informatif... il vaut mieux que le nom indique la fonction
/// il manque cpt !
void alea2 (char mondeCarre[30][30], int dim);
23 changes: 13 additions & 10 deletions aleatoire.c
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# include <stdlib.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>


/// mondeCarre => 7... byte:
/// - choix d'encodage interne [0..7] != choix d'affichage [0 => 'a', 7=>'z']
void aleatoire(char mondeCarre[30][30], int dim)
{
const char max = 072;
const char min = 0101;
/// Ce code il est buggué... il ne remplis pas le tableau avec les caractères aléatoire
/// que tu veux: de A à G
//const char max = 072; ///< 072 ? (décimal) 'G'
//const char min = 0101; ///< 0101 ? (octale) 'A'
srand(time(NULL));

for (int i =0; i<dim; i++)
{
for (int j =0; j<dim; j++)
{
mondeCarre[i][j] = (rand() % (max - min )) + min;
}
//mondeCarre[i][j] = (rand() % (max - min )) + min;
mondeCarre[i][j] = rand() % 7;
}
}
mondeCarre[0][29]= '^';
mondeCarre[29][0] = '@';


mondeCarre[0][29]= '8';
mondeCarre[29][0] = '9';

}
13 changes: 11 additions & 2 deletions init.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
# include <stdlib.h>
#include <stdio.h>

void init(char mondeCarre[30][30], int dim)
/// Avec un valeur spécifiable par l'utilisateur.
/// init(monde, 30, 1)
/// void init(char mondeCarre[30][30], int dim) => dim = 35 => crash mondeCarre[30][30]

/// void init(char** mondeCarre, int dim) => on laisse la dimmension au choix
/// void init(char mondeCarre[30][30]) => pas besoin de dimenssion qui contient 30.

/// #define DIM 30 => dim, 30 => DIM.
/// void init(char mondeCarre[DIM][DIM]) => pas besoin de dimenssion qui contient 30.
void init(char mondeCarre[30][30], int dim, int defaultValue)
{
for (int i =0; i<dim; i++)
{
for (int j =0; j<dim; j++)
{
mondeCarre[i][j] = 0;
mondeCarre[i][j] = defaultValue;
}
}
}
Loading