Exercices Papers animés - Le jeu de la vie - Enoncés

Pedro77
718 views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content
Next: Exercice 1 - Le jeu de la vie - un clignotant

Laboratoire Papers animés, avec "step_display()"

Pour ces laboratoires nous utilisons une nouvelle fonctionnalité des Papers animés : le principe du "step_display()". En effet, jusqu'à présent, chaque colorize() et chaque erase() provoquaient un affichage. Nous allons maintenant pouvoir colorier et/ou effacer autant de cases que nous le souhaitons avec colorize() et erase(), et ne faire des affichages de toutes ces étapes que quand nous le souhaitons, en utilisant une nouvelle fonction spécifique pour ça : la fonction step_display().

Il y a juste une petite subtilité supplémentaire pour pouvoir utiliser des colorize() et des erase() sans que les cases ne soient systématiquement affichées de suite (et pour pouvoir utiliser step_display() qui provoque tous les affichages des colorize() et erase() précédents), il faudra donner la valeur 1 au dernier paramètre (useStepping) de la fonction init_paper().

Manipuler les papers animés (avec "step_display()")

Un paper animé en mode "useStepping" est donc un quadrillage dans lequel on va pouvoir se déplacer, colorier et effacer des cases. Le "curseur" de coloriage se trouve initialement toujours dans le coin supérieur gauche et chaque appel à step_display() est une étape de l'animation (qui affiche d'un seul coup tous les colorize() faits jusque-là).

Exemple

Voici un exemple qui colorie un petit carré de 4 cases en en haut à gauche du paper, puis les efface, et recommence 9 fois :

Sample step_display()
#include <stdio.h>
#include <stdlib.h>
#include "paper.h"
int main()
{
init_paper(5,5,25,0.25,1);
repeat(9) {
if (!is_colored()) {
colorize();
move_right();
colorize();
move_down();
colorize();
move_left();
colorize();
move_up();
} else {
erase();
move_right();
erase();
move_down();
erase();
move_left();
erase();
move_up();
}
step_display();
} loop;
display_paper();
return 0;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

On voit que chaque colorize() n'est pas immédiatement affiché, c'est seulement lors des step_display() que les affichages (des 4 cases dessinées ou effacées, d'un coup) se font. Notons également que la dernière valeur de paramètre de init_paper() est bien 1 !

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content