void color_ideal_print(unsigned int color, IDEAL* M, int (*condition)(unsigned long long)) { if (condition == NULL) { ideal_print(M); return; } /* internals of ideal_print */ unsigned long long i; if (M == NULL) return; fprintf(stdout, "["); for (i = 0; i < (M->q - 1); ++i) { if (condition(i)) { color_printf(color, " %u", M->u_s[i]); } else { fprintf(stdout, " %u", M->u_s[i]); } } /* i = M->q - 1 */ if (condition(i)) { color_printf(color, " %u ]\n", M->u_s[i]); } else { fprintf(stdout, " %u ]\n", M->u_s[i]); } }
static void ut_print_report_end_plain(void) { bool success = (__ut_pass_count + __ut_skip_count == __ut_test_count); color_printf("%s", success ? COLOR_SUCCESS : COLOR_FAILURE); color_printf(" RESULT: %d tests, %d passed, %d skipped, %d failed%s\n", __ut_test_count, __ut_pass_count, __ut_skip_count, __ut_test_count - (__ut_pass_count + __ut_skip_count), COLOR_NORMAL); }
int m_print_tree(ComputationNode * node, int depth, bool last) { int numArgs = node->numArgs; bool hasChildren = (bool) numArgs; print_space(depth, last ); const char * color = node->valid ? GREEN : RED; color_printf(color, "%s ", node->name); printf("[%d]\n", node->value); if (!last) { printf(" "); print_pipes(depth + hasChildren); printf("\n"); } else { printf(" "); print_pipes(depth - 1); printf("\n"); } for (int i = 0; i < numArgs; i++){ printf(" "); m_print_tree(node->args[i], depth + 1, i == numArgs - 1); } }
void espace_gauche (int nb_gauche){ //Permet de faire la partie gauche d'une case de 2048 COULEUR_TERMINAL couleur[6]={BLUE,CYAN,MAGENTA,RED,YELLOW,GREEN}; if ((int)(log10(nb_gauche))==0) // Si le nombre de la grille a un chiffre color_printf(WHITE,couleur[((int)log2(nb_gauche))%6]," "); // Place 3 espaces a gauche du nombre else if ((int)(log10(nb_gauche))==1 || ((int)(log10(nb_gauche))==2)) // Si le nombre de la grille a deux ou trois chiffres color_printf(WHITE,couleur[((int)log2(nb_gauche))%6]," "); else if ((int)(log10(nb_gauche))==3 || ((int)(log10(nb_gauche))==4)) // Si le nombre de la grille a quatre ou cinq chiffres color_printf(WHITE,couleur[((int)log2(nb_gauche))%6]," "); }
void espace_droite (int nb_droite){ COULEUR_TERMINAL couleur[6]={BLUE,CYAN,MAGENTA,RED,YELLOW,GREEN}; if ((int)(log10(nb_droite))==0 || ((int)(log10(nb_droite))==1)) // Si le nombre de la grille a un chiffre color_printf(WHITE,couleur[((int)log2(nb_droite))%6]," "); // Place 3 espaces a droite du nombre avec la meme couleur que celle du nombre else if ((int)(log10(nb_droite))==2 || ((int)(log10(nb_droite))==3)) // Si le nombre de la grille a deux ou trois chiffres color_printf(WHITE,couleur[((int)log2(nb_droite))%6]," "); else if ((int)(log10(nb_droite))==4 || ((int)(log10(nb_droite))==5)) // Si le nombre de la grille a quatre ou cinq chiffres color_printf(WHITE,couleur[((int)log2(nb_droite))%6]," "); }
static void ut_print_section_beginning_plain(const char *testsuite_name) { if (strlen(testsuite_name) == 0) return; color_printf("%sSECTION '%s'%s\n", COLOR_TITLE, testsuite_name, COLOR_NORMAL); }
static void ut_printf_al_plain(const char *where, const char *format, va_list al) { switch (__ut_currently_in) { case __UT_IN_SETUP: color_printf(" SETUP: "); break; case __UT_IN_CLEANUP: color_printf(" CLEANUP: "); break; case __UT_IN_TEST: color_printf(" %s %3d: ", where, __ut_test_index + 1); } color_vprintf(format, al); color_printf("\n"); }
void color_ideal_print_verbose(unsigned int color, IDEAL* M, int (*condition)(unsigned long long)) { if (condition == NULL) { ideal_print_verbose(M); return; } /* internals of ideal_print_verbose */ unsigned long long i; if (M == NULL) return; for (i = 0; i < (M->q - 1); ++i) { if (M->u_s[i]) { if (condition(i)) { color_printf(color, "u_%llu ", i); } else { fprintf(stdout, "u_%llu ", i); } } } /* i = M->q - 1 */ if (!M->u_s[i]) { /* only the whole group algebra contains u_(q-1) */ fprintf(stdout, "\b\n"); } else { if (condition(i)) { color_printf(color, "u_%llu\n", i); } else { fprintf(stdout, "u_%llu\n", i); } } }
static void ut_list_tests(void) { int s, t; for (s = 0; s < __ut_section_count; ++s) { if (! __ut_test_quiet) ut_print_section_beginning_plain(sections[s].name); for (t = 0; t < sections[s].nb_tests; ++t) { color_printf(" %s %3d: %s\n", "TEST", sections[s].tests[t].index + 1, sections[s].tests[t].name); } if (! __ut_test_quiet) ut_print_section_end_plain(); } }
static void ut_random_init(void) { #ifdef WIN32 /* XXX Do the same on Linux? Why did we bother with /dev/urandom? */ srand(time(NULL)); #else int ret; int fdrandom = -1; int ut_random_seed; fdrandom = _ut_open("/dev/urandom", O_RDONLY); ret = read(fdrandom, &ut_random_seed, sizeof(ut_random_seed)); _ut_close(fdrandom); if (ret != sizeof(ut_random_seed)) { color_printf("cannot initialize random number generator\n"); abort(); } srand(ut_random_seed); #endif }
void affichage (jeu *p) { COULEUR_TERMINAL couleur[6]={BLUE,CYAN,MAGENTA,RED,YELLOW,GREEN}; int i,j,k,l,m,s,q,r; // i,j et k seront les iterateurs utilisés dans les boucles suivantes s=0; // iterateur utilisé dans la boucle 1 pour atteindre le nombre de valeur de la grille, il permet de parcourir la grille et d'afficher une couleur differente pour chaque valeur k=0; // iterateur utilisé dans la boucle 2 pour atteindre le nombre de valeur de la grille, il permet de parcourir la grille et d'afficher une couleur differente pour chaque valeur q=0; // iterateur utilisé dans la boucle 3 pour atteindre le nombre de valeur de la grille, il permet de parcourir la grille et d'afficher une couleur differente pour chaque valeur for (m=0;m<(7*(p->n));m++) { printf("*"); } printf("\n"); printf(" %s",p->pseudo); printf(" "); color_printf(WHITE,BLACK,"%d\n",p->score); for (m=0;m<(7*(p->n));m++) { printf("*"); } printf("\n"); for(i=0;i<(p->n);i++) { // Boucle principale s"éxecutant n fois for(l=0;l<(p->n);l++) { // Boucle 1 affichant des espaces au dessus des nombres formant le haut de la case if(p->grille[s]==0) color_printf(WHITE,BLACK," "); // Crée un espace dessus noir si la valeur de la grille est de 0 (valeur par défaut) else color_printf(WHITE,couleur[((int)log2(p->grille[s]))%6]," "); s++; } printf("\n"); for(j=0;j<(p->n);j++) { // Boucle 2 permattant d'afficher une ligne de la grille en s'arretant a la n ème valeur if(p->grille[k]==0) color_printf(WHITE,BLACK," "); // Crée un epsace gauche noir si la valeur de la grille est de 0 (valeur par défaut) else espace_gauche(p->grille[k]); // Crée l'espace avant le nombre dans la case si la valeur de la grille n'est pas égale a 0 if(p->grille[k]==0) color_printf(WHITE,BLACK,"."); // Met un point a la place d'un chiffre si la valeur de la grille est de 0 (valeur par défaut) else color_printf(WHITE,couleur[((int)log2(p->grille[k]))%6],"%d",p->grille[k]); // Affiche une case avec une des 6 couleurs du tableau couleur qui sera choisie en fonction de log2 de la valeur grille[k] si la valeur de la grille n'est pas égale a 0 if(p->grille[k]==0) color_printf(WHITE,BLACK," "); // Crée un espace droit noir si la valeur de la grille est de 0 (valeur par défaut) else espace_droite(p->grille[k]); // Crée l'espace apres le nombre dans la case si la valeur de la grille n'est pas égale a 0 k++; } printf("\n"); for(r=0;r<(p->n);r++){ // Boucle 3 affichant des espaces au dessous des nombres formant le bas de la case if(p->grille[q]==0) color_printf(WHITE,BLACK," "); // Crée un epsace dessous noir si la valeur de la grille est de 0 (valeur par défaut) else color_printf(WHITE,couleur[((int)log2(p->grille[q]))%6]," "); q++; } printf("\n"); // Saut de ligne en fin de ligne afin d'afficher une nouvelle ligne au bout de n valeurs affichées } }
static void ut_print_report_beginning_plain(const char *ut_program) { color_printf(COLOR_TITLE "====== TEST SUITE '%s' ======" COLOR_NORMAL "\n", ut_program); }
void jouer(jeu *p) { int fin,mvmt,debut; fin=0; debut=0; Key saisie; while(debut!=3) { // Menu de départ debut=menu(p); if(debut==2) // Au cas ou la personne quitte des le debut exit(0); } ajouteValAlea (p); // Commence la partie avec un 2 ou un 4 sur la grille debutTerminalSansR(); while(fin!=2 && finPartie(p)==0) { affichage(p); saisie = lectureFleche(); if (saisie==KEY_DOWN) { // Si le joueur veut déplacer en bas mvmt=mouvement(p,0); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_RIGHT) { // Si le joueur veut déplacer à droite mvmt=mouvement(p,1); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_UP) { // Si le joueur veut déplacer en haut mvmt=mouvement(p,2); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_LEFT) { // Si le joueur veut déplacer à gauche mvmt=mouvement(p,3); if (mvmt>0) // Si il y a eu un deplacement alors on ajoute un 2 ou un 4 ajouteValAlea (p); clear_terminal(); } else if (saisie==KEY_ESCAPE) { fin=menu(p); //fin prendra la valeur retournée par menu qui vaudra donc 2 si lutilisateur veut quitter la partie } } finTerminalSansR(); clear_terminal(); if (gagne(p)==1){ // Si la personne gagne en atteignant le score voulu affichage(p); printf("\n "); color_printf(BLACK,WHITE,"C'EST GAGNE WE DID IT HOURRA, VOUS GAGNEZ UNE PATATE ! \n"); } else { // Si la personne perd lorsqu'elle n'a plus de case disponible et aucun mouvement faisable affichage(p); printf("\n "); color_printf(BLACK,WHITE,"GAME OVER \n"); } if (fin==2) { // Si l'utilisateur quitte volontairement a l'aide du menu clear_terminal(); printf(" "); printf("Vous avez volontairement quitté la partie !\n"); } }