Programming Homework 9

Important: Your programs will be graded by an auto-grader (a program that we’ve written to grade your programs). What that means for you is that your output must exactly match the output we are expecting in order to receive credit.

Also, coding style will be included as a portion of your grade. Code readability is very important in programming. Some coding style guidelines have been posted to Canvas here:  https://utexas.instructure.com/courses/1229504/pages/coding-style-guidelines

Put a comment at the top of your file that includes your name and UTEID. If you want to include additional things in the header comments, like “Assignment 8”, a date, CS 303E, etc, that is fine.

Save your file as Assignment9_uteid.py where you replace “uteid” with your UTEID. For example, mine would be Assignment9_asc1492.py

Turn in one program file that does all of the following things:

1. use recursion to reverse a string. Your function must be named reverse_string, it should take in 1 string as an argument, and it should return the reversed string. Your solution MUST use recursion, or you will not receive any credit for this part.

2. use recursion to draw the “H-Tree” fractal.

The H-Tree fractal is defined as follows:

1. Begin with the letter H. The Three lines of the H are all of the same length, as shown in the first image. This is an H-Tree of order 0.

2. The letter H has four endpoints. Draw an H centered at each of the four endpoints, as shown in the second image. These H’s are half the size of the previous H. This is an

H-Tree of order 1.

3. Repeat step 2 to create an H-Tree fractal of higher orders, as shown in images 3 and 4.

Your function definition MUST have this format:

def h_tree(order, center, size):

Where:

order is is the order of the fractal, as described above

center is the center point of the H-Tree, in the format [x, y]

size is the length of each of the lines in the H

3. Make a star spin. Write a function called animate that draws a star (you can draw any type of star you want: 5-pointed, 6-pointed, 10-pointed, etc, any size, any color, etc.) and then spin the star in an infinite animation loop. The star does not necessarily need to rotate around its center – any pivot point is fine. You may create additional functions to help you with this task (maybe a draw_star() function?), but your solution to this problem must be displayed by calling animate().

You only need to spin one star to earn full credit for this problem. But, if you are feeling creative, feel free to add additional elements to your animation! J (There must be at least 1 spinning star somewhere in your result.)

I have posted some examples to canvas: https://utexas.instructure.com/courses/1229504/pages/hw-9-spinning-stars

4. You have been provided with a main function in HW9_starter_file.py. When you submit your file, it must use this exact main function. If you submit your file with an altered main function, you will lose points!

The way this main is set up, it will call your reverse_string three times on three different strings. It will then call your h_tree function to draw the H-Tree fractal. Then, the turtle window will pause until you click the mouse inside of the turtle window. Once you click the mouse inside of the turtle window, the window will clear and call your animate function to display the spinning star. Since animate runs an infinite loop, you can just close the turtle window to stop the program (this will throw an error, but that is ok).

You will notice that the animate function needs to take in two arguments (x, y) since it is triggered by a mouse click.