The App: James’ Drawing App was simple yet effective. It provdes a user friendly interface that allows the user to color in a pre-drawn elmo with a “crayon”. The user can also change the color of the crayon by pressing different keys on the keyboard. The arrow that represents the crayon will change to the corresponding color of the key pressed, letting the user know what color is currently selected. James also implemented the ondrag method for his crayon which I find to be much more effective than the onclick method when it comes to the flexibility of drawing. What struck me about this app was its creativity.
The code: James’ code was very well organized and compartmentalized, utilizing many modules. He created a module to draw the elmo, one for the crayon, and another for the different selectable colors. This left his main code with very few lines, making his overall code easy to read and understand, which ultimately allowed me to easily help him fix a few errors during the peer snapshot exercise. He makes use of 2 different turtles in his code, one named elmo to draw elmo, and the other named crayon which the user uses to color in elmo. He also utilizes a screen object for the keys that changes the crayon color.
The process: James’ initial milestones had a few basic goals in mind, including drawing shapes with key presses and changing color based on the location clicked. During the process, he changed these two goals to changing color with key presses and using the ondrag method to allow the user to draw with the crayon, both of which were successfully implemented. In his snapshot, he had already been very close to achieving those two milestones but had a couple minor bugs. We managed to work them out and fixed them with a simple addition/subtraction of 1 line of code. James clearly stated his milestones and adapted his program around the problems that he faced.
Self-reflection: Compared to my own app, James’ was much simpler but still managed to be effective by utilizing some functioning, sophisticated methods such as the ondrag crayon and the color change on key press. I also liked how he strayed from the standard “MS Paint” app and instead chose to make something more creative. There were a few things that were left out in the app. These would include the ability to draw different shapes, a clear method, and the utilization of definite loops. However, none of these, other than the clear method, would have been really necessary to the functionality of his app. I did suggest to him that he allow the user to change the pen thickness of the crayon so that the user could more easily color in the elmo if they wanted, but this was not implemented. Even though James’ app was simpler, looking at his code definitely gave me insight into how I can improve my own code. For example, his code was much, much more organized. He utilized 3 different modules that made his code much more readable and compartmentalized whereas I only used 1, making mine look like one huge clump of messy code. Overall, I thought that James’ app was excellent and was glad to be his partner.