Classwork 5: Animated ASCII Art (optional)

Objectives

To play with printing to the terminal screen.

Background

We can use printf statements to produce some "animated" ASCII art, like this one of an inch worm making its way across the screen: inch.avi.

To accomplish this, we are really printing these two strings over and over:

_____    (5 underscore characters)

_/\_

(Note: to specify a backslash character in printf use 2 backslashes "\\".)

For this to work, each time we print, we want to start over at the top left corner of the window. We also want to erase what we printed before. Fortunately, most terminal emulators understand VT100 escape sequences. For example, if we print the string "\033[2J" to the screen, the screen is "cleared" (all characters in the window are erased). Also, the escape sequence "\033[H" moves the cursor to the "home" position --- the top left corner of the screen.

Thus, we just have to include these two statements each time we print the worm to the screen:

   printf("\033[2J");   // clear screen
   printf("\033[H");	// go home

Finally, we need one more tool. Our program will be too fast if we simply printed the two inch worm strings to the screen. (We will only see the inchworm's last position.) We need a way to pause our program between steps. This can be accomplished by the usleep function. The following statement will pause the program for 350,000 microseconds (about 1/3 of a second).

   usleep(350000) ;

To make the usleep function available to you, you must include the compiler directive:

#include <unistd.h>

near the top of your program (usually right after the #include <stdio.h>).

Assignment

Be creative and use printf to create some animated ASCII art to the screen. For example, you could have two inch worms "racing" each other. Here's an example of an inch worm "eating" something it encountered: eat.avi.

When you are done submit your program by:

submit cs104_chang cw05 myart.c


Be sure to logout completely when you have finished!