Homework 12

My Draw

Task:

The purpose of this project was to create a basic 'Paint' program that used a GUI consisting of menus that the user could select from to draw their pictures. It stems from a simple GUI of fixed menus that reveals choices for the user to select from. It is designed to continue running until the user quits the program, just like an application. Although it is a fairly crude program in terms of appearance and rules, it allows for interesting interaction between the user and the computer.

Program Manual:

Once the program opens, a window is show with menu boxes across the top of the window. The menus read 'File', 'Style', 'Color', 'Fill Object', 'Line Width', 'Object', and 'Height'. Each menu can be clicked and an option selected. Any information regarding the program will appear in the terminal window, therefore it is best to have the window visible at all times.

General Use:

You can select any parameters(Style, Color, Fill Object, Line Width, and Height) to change. Style, Color, Line Width, and Height will remain the selected value until changed or reset. Fill Object will need to be selected each time the user desires to fill a shape. Once the desired parameters are chosen, the user can then choose an object to draw from the Object menu. Note: Once an object is chosen, the program will draw the object in the location selected by the user.

File Menu:

'Help'- Gives directions and definitions for the program

'Undraw'-Un-draws the last object drawn

'Reset'-Resets the program to its original state

'Quit'-Exits the program

Style Menu:

'Pen'-Draws in pen

'Crayon'-Draws in with a crayon appearance

'Brush'-Draws with a brush appearance

Color Menu:

The user is able to select which color to draw with

Fill Object Menu:

The user is able to select to fill the object(Note: Will only fill rectangles and circles drawn in pen. The user must select to fill the object each time it is desired.)

Line Width Menu:

The user is able to choose the line width

Object Menu:

The user is allowed to choose which object to draw. They are drawn to the user's desired dimensions defined by the mouse. (Note: Once an object is selected, it will be drawn.)

Height Menu:

The user is able to select the scaled height of the tree

Main interaction loop:

The main interaction loop is a very simple loop that keeps the program running and waiting for user input until the user selects to quit the program. It consists of a 'while not Done:' loop that tests if the user has chosen to quit the program. It waits for a mouse click, then finds which selection was clicked by using the select function from Menu in menu.py. The program then carries out this selection according to the action dictionary.

My Farm Picture:

Friend's Picture::

Friend's experience with program:

After using the 'Help' option in the File menu in order to understand how the program works, my friend was thoroughly amused with the program. They found it straightforward to use, and made comments like, 'This is fun.', and 'That tree kind of looks like a chicken.'. Based on my observation, they were able to use the program easily and without confusion or problem. Their evaluation of the program was that it was straightforward, easy to use, and did what they wanted it to. Their only criticism was that it was fairly limited compared to the paint application on most computers.

Extensions:

I implemented a few extensions in my project. The first extension was the use of three artistic styles: pen, crayon, and brush. The second extension was providing additional attributes such as line width and the option to fill the object. Each of these options had their own menu with parameters that could be selected by the user. The set width works for all objects except the tree, and the set fill works for closed objects only, such as the rectangle and circle when drawn in pen. Another extension I implemented was the ability to choose the scaled tree height. My fourth extension was to add additional menu options such as the ability to reset the program to the original state, basically a 'new' picture. I also added a help option that allowed the user to scroll through definitions and explanations of the program.

I did not work with any partner on this project.