void plateau(plateau_t *p) { init_tableau(p); /*On initialise un tableau ou on place des murs , le perso , la caisse et le point d'arrive*/ placer_mur(p); placer_robot(p); placer_caisse(p); placer_arrive(p); }
int main() { // Debut du code int p,min; init_tableau(); //p=produit_t(); min=minimum(); //printf("%d\n%d",p,min); decale(); insert(); // Fin du code exit(0); }
int main (int argc , char** argv){ int ilargeur,ihauteur,nbserpents,temps_attente; /* recuperation des arguments de la commande */ if (argc !=4) /* teste si le nombre d'arguments est egale a celui specifier pour snake */ { printf("entrer tout vos arguments\n"); } if(argv[0][0]=='.') { sscanf(argv[1],"%dx%d",&ihauteur,&ilargeur); sscanf(argv[2],"%d",&nbserpents); sscanf(argv[3],"%d",&temps_attente); } printf("ilargeur = %d\n",ilargeur); printf("ihauteur = %d\n",ihauteur); printf("nbserpents = %d\n",nbserpents); printf("temps d'attente = %d\n",temps_attente); serpent stab[nbserpents]; /* initialisation de l'environnement */ char cEchiquier [ihauteur*ilargeur]; int blocage [nbserpents]; int somme_blocage=0; int t; for(t=0; t < nbserpents; t++){ blocage[t]=0; } init_tableau( ihauteur, ilargeur, cEchiquier); /* Generation et placement des serpents */ int k,dir; srand(time(NULL)); for(k=0;k<nbserpents;k++){ stab[k].xposition= rand()%ihauteur ; stab[k].yposition= rand()%ilargeur; dir=rand()%3; /* Trouver le sens de direction */ switch(dir) { case 0 : stab[k].sens=haut; break; case 1 : stab[k].sens=bas; break; case 2 : stab[k].sens=droite; break; case 3 : stab[k].sens=gauche; break; } printf("%c\n",stab[k].sens); printf("%d\n",stab[k].xposition); printf("%d\n",stab[k].yposition); cEchiquier[stab[k].xposition*ilargeur+stab[k].yposition]=stab[k].sens; /* Placement du serpent dans le tableau d affichage */ } init_environnement( ihauteur, ilargeur,cEchiquier); /* affichage */ while(somme_blocage != nbserpents){ /* teste si tout les serpents sont bloqués ou pas */ for(k=0;k<nbserpents;k++){ /* boucle gerant les deplacements des serpents */ switch(stab[k].sens){ case haut : blocage[k]=depl_sens_haut(ihauteur,ilargeur,&stab[k],cEchiquier); break; case bas: blocage[k]=depl_sens_bas(ihauteur,ilargeur,&stab[k],cEchiquier) ; break; case droite : blocage[k]=depl_sens_droite(ihauteur,ilargeur,&stab[k],cEchiquier) ; break; case gauche : blocage[k]=depl_sens_gauche(ihauteur,ilargeur,&stab[k],cEchiquier); break; } } int t; somme_blocage=0; for(t=0; t < nbserpents; t++){ somme_blocage=somme_blocage+blocage[t]; /* calcul de la variable somme_blocage */ } attente(temps_attente); /* temporisation */ system( CLRSCR ); /* effacement de l'ecran */ init_environnement( ihauteur, ilargeur,cEchiquier); /* affichage du tableau a l'etat suivant (initial+1)*/ } /* statisques du programme */ int gh; int gl; int ha=0; int ba=0; int dr=0; int ga=0; int occupe=0; int vide=0; for(gh=0;gh<ihauteur;gh++){ for(gl=0;gl<ilargeur;gl++){ if(cEchiquier[gh*ilargeur+gl]==haut){ occupe=occupe+1; ha=ha+1; } else if(cEchiquier[gh*ilargeur+gl]==bas){ occupe=occupe+1; ba=ba+1; } else if(cEchiquier[gh*ilargeur+gl]==droite){ occupe=occupe+1; dr=dr+1; } else if(cEchiquier[gh*ilargeur+gl]==gauche){ occupe=occupe+1; ga=ga+1; } else if (cEchiquier[gh*ilargeur+gl]==' '){ vide=vide+1; } } } printf("%d\n",ihauteur*ilargeur); printf("%d\n",occupe); printf("%d\n",vide); float pourcentage,pourcentage1,pourcentage2,pourcentage3,pourcentage4; pourcentage= ((float)(occupe))/((float)(ilargeur*ihauteur))*100; printf("Le plateau est rempli a %0.1f (%d/%d) dont :\n",pourcentage,occupe,ilargeur*ihauteur); pourcentage1= ((float)(ha))/((float)(occupe))*100; printf("- %0.1f '^' (%d/%d)\n",pourcentage1,ha,occupe); pourcentage2= ((float)(ba))/((float)(occupe))*100; printf("- %0.1f 'v' (%d/%d)\n",pourcentage2,ba,occupe); pourcentage3= ((float)(dr))/((float)(occupe))*100; printf("- %0.1f '>' (%d/%d)\n",pourcentage3,dr,occupe); pourcentage4= ((float)(ga))/((float)(occupe))*100; printf("- %0.1f '<' (%d/%d)\n",pourcentage4,ga,occupe); return 0; } /* fin du corps principale du programme */
int main (int argc , char** argv) { int largeur,hauteur,nbserpents,attente; /*----------------- 1.recuperation des arguments de la commande---------------------------*/ if (argc !=4) /* test si le nombre d'arguments entres lors de l'exécution est egale a 4 */ { printf("entrer tout vos arguments\n"); } if(argv[0][0]=='.') { sscanf(argv[1],"%dx%d",&hauteur,&largeur); sscanf(argv[2],"%d",&nbserpents); sscanf(argv[3],"%d",&attente); } printf("largeur = %d\n",largeur); printf("hauteur = %d\n",hauteur); printf("nbserpents = %d\n",nbserpents); printf("temps d'attendre = %d\n",attente); /* ----------- 2. initialisation de l'environnement (tableau) qui permet l'enregistrement des serpents -------*/ char tableau [hauteur*largeur]; init_tableau( hauteur, largeur, tableau); /*------- initialisation de nombre de bloquage des serpents-------*/ int bloque [nbserpents]; int somme_bloque=0; int t; for(t=0; t < nbserpents; t++) { bloque[t]=0; } /* ----------------- 3.generation des directions aleatoires des serpents ----------*/ serpent tab1[nbserpents]; /*declaration des la structure de tableau des serpents à afficher*/ int k,sens1; srand(time(NULL)); for(k=0;k<nbserpents;k++) { tab1[k].xposi= rand()%hauteur ; /* position du serpent suivent x */ tab1[k].yposi= rand()%largeur; /* position du serpent suivent y */ sens1=rand()%3; /* sens de deplacement du serpent */ /* Trouver le sens de direction */ switch(sens1) { case 0 : tab1[k].sens=haut; break; case 1 : tab1[k].sens=bas; break; case 2 : tab1[k].sens=droite; break; case 3 : tab1[k].sens=gauche; break; } printf("%c\n",tab1[k].sens); printf("%d\n",tab1[k].xposi); printf("%d\n",tab1[k].yposi); tableau[tab1[k].xposi*largeur+tab1[k].yposi]=tab1[k].sens; /* Placement des serpents dans l'environnement */ } /* ------------------ 4. Affichage de cadre du tableau --------------------------------*/ affichage_cadre( hauteur, largeur,tableau); /* ------------------ 5. Deplacement des serpents dans l'environnement définie -------------------*/ while(somme_bloque != nbserpents) /* on teste si les serpent sont tous bloqués */ { for(k=0;k<nbserpents;k++) /* cette branche permet de gerer tous les deplacements des serpents */ { switch(tab1[k].sens) { case haut : bloque[k]=depl_sens_haut(hauteur,largeur,&tab1[k],tableau); break; case bas: bloque[k]=depl_sens_bas(hauteur,largeur,&tab1[k],tableau) ; break; case droite : bloque[k]=depl_sens_droite(hauteur,largeur,&tab1[k],tableau) ; break; case gauche : bloque[k]=depl_sens_gauche(hauteur,largeur,&tab1[k],tableau); break; } } int t; somme_bloque=0; for(t=0; t < nbserpents; t++) { somme_bloque=somme_bloque+bloque[t]; /* calcul de la variable somme_bloque */ } attendre(attente); /* delai d'attente */ system( CLRSCR ); /* effacer à chaque fois l'ecran*/ affichage_cadre( hauteur, largeur,tableau); /* affichage du tableau a l'etat suivant (initial+1)*/ } /* fin de while*/ /* -------------6. statisques : pourcentage pour remplissage + chaque direction ------------------------------- */ int gh; /* parcours en hauteur*/ int gl; /* parcours en largeur*/ int ha=0; /* nombre de deplacement de la direction 'HAUT' */ int ba=0; /* nombre de deplacement de la direction 'BAS' */ int dr=0; /* nombre de deplacement de la direction 'DROITE' */ int ga=0; /* nombre de deplacement de la direction 'GAUCHE' */ int occupe=0; /* nombre de place occupé dans l'environnement(tableau) par tous les directions */ int vide=0; /* nombre de place vide*/ for(gh=0;gh<hauteur;gh++){ for(gl=0;gl<largeur;gl++){ if(tableau[gh*largeur+gl]==haut){ occupe=occupe+1; ha=ha+1; } else if(tableau[gh*largeur+gl]==bas){ occupe=occupe+1; ba=ba+1; } else if(tableau[gh*largeur+gl]==droite){ occupe=occupe+1; dr=dr+1; } else if(tableau[gh*largeur+gl]==gauche){ occupe=occupe+1; ga=ga+1; } else if (tableau[gh*largeur+gl]==' '){ vide=vide+1; } } } printf("%d\n",hauteur*largeur); printf("%d\n",occupe); printf("%d\n",vide); float pourcentage; /* pourcenatge de remplissage de l'espace */ float pourcentage1; /* pourcenatge de remplisssage de la direction HAUT*/ float pourcentage2; /* pourcenatge de remplisssage de la direction BAS*/ float pourcentage3; /* pourcenatge de remplisssage de la direction DROITE*/ float pourcentage4; /* pourcenatge de remplisssage de la direction GAUCHE*/ pourcentage= ((float)(occupe))/((float)(largeur*hauteur))*100; printf("Le plateau est rempli a %0.1f (%d/%d) dont :\n",pourcentage,occupe,largeur*hauteur); pourcentage1= ((float)(ha))/((float)(occupe))*100; printf("- %0.1f '^' (%d/%d)\n",pourcentage1,ha,occupe); pourcentage2= ((float)(ba))/((float)(occupe))*100; printf("- %0.1f 'v' (%d/%d)\n",pourcentage2,ba,occupe); pourcentage3= ((float)(dr))/((float)(occupe))*100; printf("- %0.1f '>' (%d/%d)\n",pourcentage3,dr,occupe); pourcentage4= ((float)(ga))/((float)(occupe))*100; printf("- %0.1f '<' (%d/%d)\n",pourcentage4,ga,occupe); return 0; } /*---------------- Fin de programme principale ----------------*/