Solo MP

This MP, as well as all other MPs in CS 225, are to be completed without a partner.

You are welcome to get help on the MP from course staff, via open lab hours, or Piazza!

Checking Out the Code

From your CS 225 git directory, run the following on EWS:

git fetch release
git merge release/mp2 -m "Merging initial mp2 files"

If you’re on your own machine, you may need to run:

git fetch release
git merge --allow-unrelated-histories release/mp2 -m "Merging initial mp2 files"

Upon a successful merge, your MP2 files are now in your mp2 directory.

Part 1 (Curated): The Image Class

An Image object is a subclass of the PNG class. This means it inherits all the member functions of the PNG class; so anything you could do with a PNG, you can also do with an Image.

After creating the Image class, implement the methods of the Image class:

Open the doxygen for class Image


When you’ve finished this part, you can make and run Part 1 by running:

make mp2-1

If execution goes smoothly, images named lighten.png, saturate.png, and scale2x.png will be created in your working directory.

Automated Testing

To test your code using Catch, run the following:

make test

Extra Credit Submission

For a few bonus points, you can submit the code you have implemented and tested for part one of MP 2. You must submit your work before the extra credit deadline (given above). Although this is optional, we encourage everyone to do this for a couple reasons:

Be sure to commit and push your work before the extra credit deadline to earn extra credit.

Guide: How to submit CS 225 work using git

Part 2 (Curated): The StickerSheet Class

Lets add stickers on top of an image!

Your goal in this part of the MP is to make a StickerSheet composed of a collection of Images. To do so, you will create a class StickerSheet that will maintain an array of pointers to Image objects. Each Image in the Scene will have an index, an $$x$$-coordinate, and a $$y$$-coordinate. The member functions described below will support creating, modifying, and drawing the collection of Image stickers in the StickerSheet.

To implement the StickerSheet class, you will write a header file that contains a declaration of the StickerSheet class (StickerSheet.h) and a source file that contains the implementation of the StickerSheet class (StickerSheet.cpp).

To see all the required functions, check out the Doxygen:

Open the doxygen for class StickerSheet

Part 3 (Creative): Create an image with stickers!

For the last part of this MP, in the main function in main.cpp create a StickerSheet that contains an image and at least three stickers. Before exiting main, save your creation to disk as myImage.png.

We’ll take a look at your photo filled of stickers! Keep it clean and something you’re okay being shared with the class so we can show the best ones off to the whole class! :)

Sharing Your StickerSheet

You just made something awesome that never existed before -- you should share your sticker sheet (but do not have to)!

If you share your StickerSheet on Facebook, Twitter, or Instagram with #cs225, I will or the post as soon as I see it. I think many of your peers will too!   — Wade


When you’ve finished Part 2 and Part 3, you can make the full MP by running:

make test

Automated Testing

To test your code using Catch, you will need to enable the Part 2 test cases. To do so, go into tests/part2.cpp and uncomment the commented section at end of the file.

As you saw when you uncommented the test case, the test case is deliberately insufficient. We strongly recommend augmenting these tests with your own.

Once you’re ready to run the automated tests, run:

make test

Handing in your code

You must submit your work to git for grading. We will use the following files for grading:

All other flies will be ignored in grading.

Guide: How to submit CS 225 work using git