#include #include typedef struct jeu { int scoreJ; int scoreO; int *tab; int tour; int termine; }jeu; void init(jeu *n) { int i; n->scoreJ=0; n->scoreO=0; for(i=0;i<12;i++){ n->tab[i]=4; } printf("Qui commence la partie? Entrez 0 pour Joueur et 1 pour Ordinateur\n"); scanf("%d",&n->tour); n->termine=0; } void affichage(jeu *n){ printf("_____________________________________\n"); printf("| %i | %i | %i | %i | %i | %i |\n",n->tab[11], n->tab[10], n->tab[9], n->tab[8], n->tab[7], n->tab[6]); printf("|_____|_____|_____|_____|_____|_____|\n"); printf("| %i | %i | %i | %i | %i | %i |\n",n->tab[0], n->tab[1], n->tab[2], n->tab[3], n->tab[4], n->tab[5]); printf("|_____|_____|_____|_____|_____|_____|\n"); printf("\n\n Score du joueur:%d\n Score de l'ordinateur:%d",n->scoreJ, n->scoreO); } void prise_joueur(jeu *n){ int trou_s=13; int trou; int nb_graines=0; while (trou_s<0 || trou_s>5){ printf("Quel trou choisisez vous?"); scanf("%d",&trou_s); if (n->tab[trou_s]==0) printf("Impossible de selectionner une case vide"); } nb_graines=n->tab[trou_s]; n->tab[trou_s]=0; trou=trou_s; while (nb_graines!=0){ trou++; if(trou==12)trou=0; if(trou==trou_s)trou++; n->tab[trou]++; nb_graines--; } while (trou>5 && trou<12){ if(n->tab[trou]==2 || n->tab[trou]==3){ n->scoreJ=n->scoreJ+n->tab[trou]; trou--;} else break; } n->tour=1; } int ia_attaque_hype(jeu *n){ int i; int j; int k; int l; int nb_graines; double score[2]; double score_ca[2] = {0,0}; jeu *v; score[0]= 0; score[1]= n->scoreO-n->scoreJ; v=malloc(12*sizeof(jeu)); for (i=6;i<12;i++){ if (v->tab[i]==0)i++; v=n; nb_graines=v->tab[i]; v->tab[i]=0; j=i; while (nb_graines!=0){ j++; if(j==12)j=0; if(j==i)j++; v->tab[j]++; nb_graines--; } while (j>=0 && j<6){ if(v->tab[j]==2 || v->tab[j]==3){ v->scoreO=v->scoreO+v->tab[j]; j--;} else break; } score_ca[1]=v->scoreO; for (k=0;k<6;k++){ if (v->tab[k]==0)k++; nb_graines=v->tab[k]; v->tab[k]=0; l=k; while (nb_graines!=0){ l++; if(l==12)l=0; if(l==k)l++; v->tab[l]++; nb_graines--; } while (l>=6 && j<12){ if(v->tab[l]==2 || v->tab[l]==3){ v->scoreJ=v->scoreJ+v->tab[l]; l--;} else break; } if (score_ca[2]scoreJ){ score_ca[2]=v->scoreJ; } } if (score[2]tab[trou_s]; n->tab[trou_s]=0; trou=trou_s; while (nb_graines!=0){ trou++; if(trou==12)trou=0; if(trou==trou_s)trou++; n->tab[trou]++; nb_graines--; } while (trou>=0 && trou<6){ if(n->tab[trou]==2 || n->tab[trou]==3){ n->scoreO=n->scoreO+n->tab[trou]; trou--;} else break; } n->tour=0; } void alternance(jeu *n){ while (n->termine==0){ affichage(n); if (n->tour==1){ prise_ordi(n);} else prise_joueur(n); } } int main(){ jeu *n; n=malloc(12*sizeof(jeu)); init(n); alternance(n); return 0; }