Drawing App Project

by William Chen

24 Feb 2016

Basic Milestones:

  • selection of drawing mode using clicks and/or keys
  • displays current mode/relevant information
  • clear the drawing and start over

Specific Milestones:

  • Basic drawing functionality and interface
  • Add colors and brush sizes
  • Add basic stamps (circles, squares, etc)
  • Modularize code for cleanliness and ease of reading

Optional goals:

  • background color selection
  • “erase” functionality
  • color mixing
  • Add at least 2 different brush types
  • [1/2] Add at least 2 “special” stamps
  • [1/2] Add fill function for shapes

So I was able to achieve all of my basic milestones, and now looking back some of my optional goals were pretty far fetched. Out of the optional milestones I made 1 special stamp, a star, which is not even that special. I was hoping to make squigly lines that iterated more the farther away you clicked, or a zigzag that did the same thing. On the fill function I wanted to be able to turn on and off filling of shapes in case the user wanted just plain shapes, but once again I got stuck on the implmentation and junked the idea. The program runs fine and the functionality is alright but I can not actually control the size of the shapes, they’re all controlled by the size of the pen which is kind of confusing to me? I feel like maybe I should have separate them into two separate things but at the same time it could just not be updating the value and I don’t actually understand how global variables work. I am also unhappy with my inability to completely modularize it, while I was developing my shape functions and trying to place them into their own module it required importing from the main module which is not allowed, so I ended up just having to leave it there since I was running out of time to work on the program. I tried a variant where I moved pretty much everything outside of main and made a new modle that contained everything and main was only the import statements and three lines of code, but that did not work out either so I just scrapped that idea. Overall I think it was a good learning experience about managing the scope of a program and your time as well. I liked having optional goals cause they made me want to achieve them without the pressure of things I absolutely had to implement.

Will is a Senior Computer Science major trying to graduate and move on with his life. Find William Chen on Twitter, Github, and on the web.