# include # include # include typedef struct { char valeurs[100]; int debut; int fin; size_t taille; } file; void initialise_file(file* f) { f->debut = 0; f->fin = 0; f->taille = 0; } int empty(file* f) { return (f->taille == 0); } void enqueue(file* f, char c) { f->valeurs[f->fin] = c; f->fin++; f->taille++; } char dequeue(file* f) { if (empty(f)) { printf("Erreur : La file est vide.\n"); return; } f->debut++; f->taille--; return f->valeurs[f->debut-1]; } void affiche_file(file* f) { int i; if (f->taille == 0) { printf("File vide.\n"); return; } printf("<------------\n"); for (i = f->debut; i != f->fin; i++) { if (i == 100) { i = 0; } printf("%c ",f->valeurs[i]); } putchar('\n'); } char first(file* f) { return f->valeurs[f->debut]; } void clear(file* f) { while (!empty(f)) { dequeue(f); } } void affiche_couleurs(void) { ChoisirCouleurDessin(CouleurParComposante(16,217,62)); /* Green */ RemplirRectangle(0,0,400,400); ChoisirCouleurDessin(CouleurParComposante(245,14,14)); /* Red */ RemplirRectangle(400,0,400,400); ChoisirCouleurDessin(CouleurParComposante(221,220,28)); /* Yellow */ RemplirRectangle(0,400,400,400); ChoisirCouleurDessin(CouleurParComposante(28,95,221)); /* Blue */ RemplirRectangle(400,400,400,400); } void choisit_couleur_aleatoire(file* f) { /* Met en valeur une couleur graphiquement et stocke la couleur dans la file avec l'initiale de la couleur */ int x,y; unsigned long ms = Microsecondes(); unsigned long cycle = 1000000L; while (ms + cycle < Microsecondes()) srand(time(NULL)); x = rand() % 800; y = rand() % 800; if (x < 400 && y < 400) { enqueue(f, 'G'); ChoisirCouleurDessin(CouleurParNom("green")); RemplirRectangle(0,0,400,400); } else if (x > 400 && y < 400) { enqueue(f, 'R'); ChoisirCouleurDessin(CouleurParNom("red")); RemplirRectangle(400,0,400,400); } else if (x < 400 && y > 400) { enqueue(f, 'Y'); ChoisirCouleurDessin(CouleurParNom("yellow")); RemplirRectangle(0,400,400,400); } else if (x > 400 && y > 400) { enqueue(f, 'B'); ChoisirCouleurDessin(CouleurParNom("blue")); RemplirRectangle(400,400,400,400); } else { printf("ERREUR"); } ms = Microsecondes() + cycle; while (Microsecondes() < ms) { /* Attente 1sec */ } affiche_couleurs(); } char choix_utilisateur(void) { /* TODO */ } int main(void) { int nb_tours = 1; file f; initialise_file(&f); InitialiserGraphique(); CreerFenetre(200,100,800,800); affiche_couleurs(); while (1) { choisit_couleur_aleatoire(&f); affiche_file(&f); while (empty(f)) { char couleur; char choix; couleur = dequeue(f); choix = choix_utilisateur(); } /* Boucle infinie */ } /*affiche_file(f); enqueue(f, 'A'); enqueue(f, 'B'); enqueue(f, 'C'); affiche_file(f); dequeue(f); affiche_file(f); dequeue(f); affiche_file(f); enqueue(f, 'D'); affiche_file(f); clear(f); affiche_file(f);*/ return EXIT_SUCCESS; }