At My Fingertips
In this activity you will implement different functions to create different tiles, that composed together can ultimately generate a Pac-Man maze like the one below.
This activity only focuses on creating the tiles and composing a small maze. If after this you want to learn how to create bigger mazes you should save all the functions that create tiles in your toolbox, you will need them when you do the Pac-Man Maze activity after this one.
While different tiles have different patterns, they are all square shapes with a black backround. To avoid having to write
rectangle(side, side, black)
for each of the tiles, let's implement a black_square
function
that simply returns a black square with the given side
. This way you can simply write
black_square(side)
to obtain a background!
You can use the rectangle function, but if
you have a square
function in your toolbox that's even better!
(remember to import it if that is the case)
Implement the straight_tile
function that generates a straight tile to use for the border.
The tile should be horizontal if the value of boolean parameter horizontal
is True
,
otherwise it should be vertical.
The blue line that goes over the straight tile should be centered and the thickness should be 1/5 of the tile's side.
Use the black_square
function you implemented for the background.
Implement the function corner_tile
to generate a corner tile rotated
according to the rotation
parameter, that represents the angle of rotation of the corner.
Since the paramter represents an angle, the permitted values are 0, 90, 180 or 270,
where:
corner_tile(100, 0)
should return a top-right cornercorner_tile(100, 90)
should return a top-left cornercorner_tile(100, 180)
should return a bottom-left cornercorner_tile(100, 270)
should return a bottom-right corner
Since any other value is not permitted, you should assert that the given parameter is valid.
Complete the assertion in the function to ensure the values are valid!The blue line should have thickness of 1/5 times the tile's size, and should be able to match a straight tile. This implies that the blue line should pass through the middle of the sides of the corner tile, like a continuation of a straight tile.
Implement the function floor_tile
to generate a floor tile that can be empty or have a dot or a pill, depending on the value of boolean parameters dot
and pill
.
If dot
and pill
are both False
, then the floor tile should be empty.
If dot
is True
, then the tile should contain a white circle with diameter of 1/5 of the tile's side
If pill
is True
, then the tile should contain a white circle with diameter equal to the tile's side
dot
and pill
should never be both True
. You can ensure this with an assertion
(remember them from the Pac-Man activity?)
Lastly, implement the function pacman_tile
that generates a square tile
of the given side
, with a Pac-Man with the given mouth_angle
on top of it.
pacman
functionThe pacman
function should produce a Pac-Man graphic of the given
radius
and whose mouth is open at the given angle mouth_angle
.
If you haven't, you should solve the
Pac-Man
activity first, and save the pacman
function in
your toolbox by clicking on the icon
on the cell containing the pacman
function definition.
Once you are done, come back here and import the pacman
function from your toolbox by running the next code cell.
Now implement the pacman_tile
function using the pacman
function you imported. This is the result it should produce.
The Pac-Man's position should be fixed at the left of the background. Use pin, compose and center_left, to obtain the wanted result.
Generate some tiles using the functions you implemented, and combine them together using beside and above to obtain a simple maze like the following one:
Implement a simple_maze
function that takes as a parameter the side that each tile should have.
But don't cram all the code into this one function: when needed, introduce addtional helper functions.
The code should be readable and without code duplicates!
As you likely have noticed, it is very painful to combine the tiles in this way, even for such a small maze. Imagine building the big maze we showed at the beginning!
There must be a way to make things easier... we discuss it in the Pac-Man Maze activity! Go take a look!
You built simple tiles that can be used to generate a Pac-Man maze!
You practiced function definition and implemented multiple functions that take boolean values as parameters. You used conditionals to handle all the cases and return the necessary simple tile graphic.
For the corner tiles, you practiced the use of pin and compose,
and for the Pac-Man tile, you had to import the pacman
function from your toolbox.
You practiced assertion to ensure the validity of the values of the parameters of the corner_tile
funciton.
The introduction of the black_square
helper function is a form of problem decomposition,
since in this case all the tiles had the same background in common.
You had to build a simple maze and got to the conclusion that building bigger mazes tile by tile is too laborious.
This activity has been created by LuCE Research Lab and is licensed under CC BY-SA 4.0.
Pac-Man Maze Tiles
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version b744b47 (Tue, 08 Oct 2024 16:30:14 GMT)