The app
Jason created a very enjoyable Microsoft Paint-esque drawing app, which allows the user to choose the color and placement of lines, as well as allowing the user to choose and place different shapes. The app also has an example mode, which draws a polygon with a random number of sides at a random location, to demonstrate the app’s functionality. The user can click “Clear Board” to start over. The app is set against a soothing backdrop of a sky with flower petals.
The app fulfilled all the requirements of the assignment. The interface is quite user-friendly, as the user is clearly directed to click a certain key to obtain a different color or shape. I did have a few subjective critiques about the interface. The area to click for both “Example Mode” and “Clear Board” was a little ambiguous — the app might have benefited from drawing more “button-y”-looking areas to click. Also, the instructions that flashed at the beginning stated to click and release in order to draw a shape at the end of a line, but I missed this the first time I ran the app, so I didn’t know how to make shapes. It might have been better to put this line at the bottom of the screen so that the directions would always be there. Otherwise, I thought that the app was very enjoyable to play, and I was able to create many drawings that looked different each time.
The code
Jason’s app utilizes five custom modules: one main module, one module for the screen setup (with the boundary and mode options, one module to call the background from a saved image, one module to write the instruction on the screen before gameplay begins, and one module for the app’s example mode. Separating the code into these different modules makes it very reasonable, and it was quite well commented. He used custom functions to great effect in “examplemodule.py”, where he defined a polygon that could be drawn with a random number of sides within a range, and used that number to calculate the total angle measurement of each polygon.
There were also many different turtles used in the app. He used one for the “pencil” and one for the shape drawn. You can read in his reflection that the goal was to have to independently-moving turtles, so that shapes and lines could be drawn in different places, but that this didn’t quite work out. Each of the colors, shapes, and words defining the different modes were also all different turtles. Jason was able to put these different turtles in a “turtlelist” and use them in a for loop in the setup, which was very effective. In addition to these, the example mode and the instructions were also different turtles. I think that this was effective for the overall functionality of the app, it seemed to become a little problematic in the “clearboard” function in “main.py,” where each turtle had to be individually cleared or reset. I wonder if it would have been possible to consolidate some of these turtles, if only to make the debugging process easier and the code cleaner.
The process
It seems like Jason did very well on this assignment, considering his time constraints. He made substantial progress between the snapshot and the final product, adding the shape drawing functionality, the example mode, instructions, labels, and a custom image background. His milestones did not change between the beginning of the project and the end. However, he notes several frustrations in his project, including the connection of the line and shape drawing modes, and not being able to adjust the line thickness as he wanted to. However, I really appreciated observing his problem-solving process for approaching these questions, and I feel that he would have been able to solve these issues with a little more time.
Self-reflection
I had a lot of trouble in my own drawing app trying to create customizable shapes for the user. I could not figure out a way to define the different shapes of birds and clouds and have them called by different key strokes. Looking at Jason’s code makes me wonder if I could have defined these shapes as separate turtles, or if that only works for the pre-defined turtle shapes. I also really liked the versatility of Jason’s app, because the user has almost complete control over what they draw — something that my app was not as good about. The interface of Jason’s app makes me think that I should have given the user the option of what color to make each sail, rather than randomly assigning from a list. It seems like, in these games, more autonomy is better.