@extends('template') @section('title') Lab 09: Part 2A: Recursive Turtles @stop @section('content') # Lab 09: Part 2A: Recursive Turtles The [turtle section of our quick-reference page](/reference/quickref#turtle) has information about the available `turtle` and `turtleBeads` drawing commands. The [ Turtle module API](https://docs.python.org/3/library/turtle.html) is the official Python documentation for the `turtle` module. ## Setup In the `lab09` folder, open `recursiveTurtles.py`. At the bottom of the starter file is a function `run`, which invokes `setupTurtle`. The invocations of the functions you write (e.g., `row()`) will go inside `run()`. This is how you will test your turtle functions today. ## Task 1. The provided `square` function and how to test ```py def square(length): """Draws a square of size length maintains heading and position invariant""" for _ in range(4): fd(length) lt(90) ``` ```py # WRITE YOUR FUNCTIONS HERE ``` ...then invoke `square` in the `run` function. How to test your functions: 1. Call your function from within the `run` function (near the bottom of your file) 2. Run your file in Thonny 3. This will automatically call the `run` function, which in turn will call your function. Do a test run with `square` by calling `square` from within `run`. Note that there is a `test_recursiveTurtles.py` file in your `lab09` folder, but it does **not** include tests for all the functions and the tests rely on drawing lines in a certain order, which you do not necessarily have to follow. So, for today, it is better to test by calling your functions from within the `run` function. {{-- --}} ## Task 2: Row of squares
Partner A
Write a recursive method called `row(number, size)` that draws a horizontal row of `number` squares of size `size`. **This function must be recursive and maintain a position and heading invariant.** FYI: In the example screenshots below, the Turtle's pen was set to red ( via `pencolor('red')`), but your pen color will be black by default.
## Task 3: Spaced row of squares
Partner B
Write a recursive method called `spacedRow(number, size)` that draws a horizontal row of `number` squares of size `size` with a constant space of `size/4` between each square. **This function must be recursive and maintain a position and heading invariant.** ## Task 4: Decreasing row of squares
Partner A
Write a recursive method called `decreasingRow(number,size)` that draws a horizontal row of `number` squares. The first square has size `size` and each subsequent square is half the size of the previous one. **This function must be recursive and maintain a position and heading invariant.** ## Task 5: Nested squares
Partner B
Write a recursive method called `nestedSquares(number,size)` that draws `number` nested squares. The largest square has size `size` and each subsequent square is half the size of the previous one. The squares are anchored in the lower left corner. **This function must be recursive and maintain a position and heading invariant.** ## Task 6: Diagonal squares
Partner A
Write a recursive method called `diagonal(number,size)` that draws `number` decreasing diagonal squares. The largest square has size `size` and each subsequent square is half the size of the previous one. **This function must be recursive and maintain a position and heading invariant.** ## Task 7: Double Diagonal squares
Partner B
Write a recursive method called `doubleDiagonal(number,size)` that draws `number` decreasing diagonal squares. The largest square has size `size` and each subsequent square is half the size of the previous one. Each recursive call draws **two** new squares: one anchored at the upper right corner and the other anchored at the lower left corner. **This function must be recursive and maintain a position and heading invariant.** {{-- --}} ## Task 8: Super diagonal squares
Partner A
Write a recursive method called `superDiagonal(number,size)` that draws `number` decreasing diagonal squares. The largest square has size `size` and each subsequent square is half the size of the previous one. In `superDiagonal`, squares are placed on the diagonal at both the upper right corner and the lower left corner. **Note**: `superDiagonal` will not invoke `diagonal`. **This function must be recursive and maintain a position and heading invariant.** @include('/labs/lab09/_toc') @stop