Exercice langage C corrigé (Flocons)

#include 
#include "swindow.h"

struct Flocon
{
  int x, y;
};

void init_flocon(Flocon * f, int longueur, int hauteur)
{
  f->x = rand() % longueur;
  f->y = rand() % hauteur;
}

void dessine_flocon(SimpleWindow * window, Flocon * f)
{
  window->drawPoint(f->x, f->y);
}

void avance_flocon(Flocon * f, int hauteur)
{
  // Deplacement vertical entre 0 et 3.
  f->y = f->y + rand() % 4;
  // Deplacement horizontal entre -2 et 2.
  f->x = f->x + (rand() % 5) - 2;

  // Si le flocon est arrive en bas de la fenetre, on le replace au sommet.
  if (f->y >= hauteur)
    f->y = 0;
}

int main(int argc, char ** argv)
{
  const int longueur = 200;
  const int hauteur  = 200;

  const int nb_flocons = 500;

  Flocon flocons[nb_flocons];

  // Initialise le generateur de nombres aleatoires
  srand(time(0));

  SimpleWindow window("neige", longueur, hauteur);
  window.map();

  // Initialisation aleatoire de la position des flocons:
  for(int i = 0; i < nb_flocons; i++)
    init_flocon(flocons + i, longueur, hauteur);

  // boucle infinie pour afficher les flocons
  while (true) {
    // Efface la fenetre en bleu clair:
    window.color(1, 0.5, 0.5);
    window.fill();

    // Dessine en blanc:
    window.color(1, 1, 1);

    for(int i = 0; i < nb_flocons; i++) {
      // Affichage des flocons:
      dessine_flocon(&window, flocons + i);

      // Deplace les flocons:
      avance_flocon(flocons + i, hauteur);
    }

    window.show();

    // attends 20ms
    usleep(20000);
  }

  getchar();

  return 0;
}

Voici un autre exercice sur la génération de flocons de neige en langage C, avec la solution correspondante.

Énoncé :

Écrire un programme en langage C qui génère un motif de flocon de neige de Koch. Le flocon de Koch est une courbe fractale qui commence par un triangle équilatéral. À chaque étape, chaque segment de droite est divisé en trois parties égales, puis le segment du milieu est remplacé par deux segments formant un triangle équilatéral.

Spécifications :

  1. Le programme doit dessiner un flocon de Koch de manière récursive.
  2. L’utilisateur doit pouvoir spécifier le nombre d’itérations.
  3. Le programme doit utiliser une bibliothèque graphique (par exemple, graphics.h sous Windows ou SDL pour plus de portabilité).

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *