CS 70

Homework 3: Define the Asciimation Class

In this Step, we will fill in the definition for an Asciimation class. For now, it'll contain a single Sprite object that it'll draw to the screen. In the next assignment, we'll have more than one Sprite.

Your Task

The Asciimation class should have the following private data members:

  • An array of characters of length MOVIE_WIDTH * MOVIE_HEIGHT that holds all of the currently displayed characters
  • A Sprite object that will be displayed (our one and only “actor”!)

Your Asciimation class should also have a parameterized constructor that takes in the name of a file with the content of a Sprite and a starting position (topLeftRow and topLeftColumn), then uses them to initialize the Sprite data member.

The Asciimation class also has two public static constants:

static constexpr int MOVIE_WIDTH = 80;
static constexpr int MOVIE_HEIGHT = 40;

These define the size of our animation display area.

Helpful Hints

  • LHS Cow speaking

    Here are some hints for the Asciimation class.

Accessing a Static Member

You can access a class's static member variable using the class name and the scope-resolution operator; for example, ClassName::variableName.

Initializing the Sprite

Remember that the default constructor for the Sprite class is disabled! When (and how) should we initialize the Sprite data member so that not having a default constructor won't cause us problems?

Once you've finished this step, you should be able to compile and link everything again—but you will still get warnings about unused variables because you haven't implemented everything needed in the Asciimation class yet.

Use the Member-Initialization List

To receive full idioms points, your constructor must properly use the member-initialization list. You can read about this expectation in Section 4.1 of the CS 70 Idioms Page, and you can read more about member-initialization lists in the lessons and in Chapter 1.1 of the Unofficial CS70 textbook.

Name Your Data Members Correctly

You should name your Sprite data member sprite_ to be consistent with other parts of the starter code.

To Complete This Part of the Assignment

You'll know you're done with this part of the assignment when you've done all of the following:

(When logged in, completion status appears here.)