
“So incredibly important to start our youngest learners on a path to coding literacy—this program is engaging and effective.” Eileen H.
Welcome to Turtle Tuesdays!
Turtle Tuesdays offers fun programming challenges for Logo and (sometimes) Pro-Bot, InO-Bot, and Kinderlogo users. These challenges are also posted every Tuesday on Facebook and Instagram. All the challenges are archived here, with links and solutions in the sidebar. Easier designs await younger learners, while older students can tackle more difficult challenges. All students will enjoy creating code that makes their project special to them as they explore new commands. Encourage students to work collaboratively on projects.
If you don’t already have Logo, get the 14-day Free Trial and start coding!
Get an InO-Bot robot for free with a 3-year Logo Household License. Just $49.95 (plus S&H) for years of coding fun!
InO-Bot follows your Logo commands, just like the original floor turtle.
Turtle Tuesdays Challenge for July 2026

Let’s create a text-based adventure!
This month, Turtle Tuesdays will be totally different! You’ll embark on a month-long coding project in Logo. We’re going to create a text-based adventure program. (Get the 14-day Logo trial version here, if you don’t already have Logo.)
We’ll get you started and you can come back to this page every few days to get new hints and snippets of code to use. Some steps are easy and won’t take much time. Other parts are a bit more complicated, but we’ll guide you every step of the way. By the end of the month, you’ll have an adventure you’ll be proud of.
To do this project, you will need to know how to write procedures and create variables. If you haven’t done this before, you can follow the instructions in the Logo Works: Lessons in Logo book, which you can access with your Logo login code from this page.
Click to expand and read each section of the guide below to create your adventure game. New sections will be available every few days, so check back often.
Read First: About the Project
Together, we’ll create a text-based adventure game. The adventure will take place in a Mystery Mansion. You will enter commands to move from room to room, look at what’s in each room, explore items to get more details, take items that are useful, and eventually solve the mystery.
We’ll give you tips every step of the way. Your adventure can be as simple or as complex as you want, but it’s best to start with a simple plan and build on it after the basic program works.
This project will use property lists. If you haven’t used property lists before, no worries. You will soon learn how useful they can be. This adventure game is a perfect opportunity to use property lists. Rooms have properties, and the objects in them have properties.
The great thing about the design we will use is that you can easily create an entirely different adventure game by changing information in just two procedures. In October, you could turn it into a Haunted House. In December, it could become Santa’s Village.
There are many steps to this project. Every few days, you can open up the next step on this page.
You may find it useful to team up with someone as you create your program. Bouncing ideas off another person can make your project better. Your adventure “buddy” doesn’t have to be a programmer, just someone who is interested in your project and willing to help you think through it.
FYI: One of the earliest and most popular text adventure games was Zork, released 49 years ago (1977) to run on a PDP-10 mainframe computer. It was developed at MIT a little after Logo was created there. Read more about Zork.
Let’s get started! Go to Step 1.
Step 1: Create a map of the rooms in your mansion.
Shown at the right is a sample map of a mansion. It will serve as our guide as we code the adventure.
Your first job is to create a map of rooms in your mansion. There don’t need to be many rooms. Start with just a few. You can always add or remove rooms later. You don’t have to use the rooms shown here.
The only rules are:
• Each room has to share a wall with at least one other room.
• The name of the room can’t have a space in it. Use an underscore character instead of a space.Come back in a couple of days to see how to use property lists in Step 2 so you can move from room to room in your mansion.
Click to download a PDF of Step 1.
Step 2: Set up how to get from room to room.
Click to download a PDF of Step 2.
Have you created a map of rooms in your mansion? Great! (If you haven’t, go do it now.)
Today, you will create commands so the player can move from room to room in your mansion.
To move around the mansion, you will use these directional commands:
NORTH,SOUTH,EAST,WESTMake a procedure called
SETUPin the Logo Editor that will create your mansion and everything in it.
TO SETUP
ENDThe
SETUPprocedure should include an instruction that stores the names of the rooms in a variable, like this:
MAKE "ROOMS [ENTRY DINING_ROOM LIBRARY ...]Next, choose the room that the player starts in. In our mansion, the room is called ENTRY. Put this instruction in the SETUP procedure, using the name of your starting room:
MAKE "ROOM "ENTRYYour SETUP procedure now looks something like this:
TO SETUP
MAKE "ROOMS [ENTRY DINING_ROOM LIBRARY ...]
MAKE "ROOM "ENTRY
ENDCreate a new procedure named
SETUP_MAP. It will be called by theSETUPprocedure.
TO SETUP_MAP
END
TO SETUP
SETUP_MAP
MAKE "ROOMS [ENTRY DINING_ROOM LIBRARY ...]
MAKE "ROOM "ENTRY
ENDIn the
SETUP_MAPprocedure, you will create a property list for each room. The property list will have a direction word followed by the room you get to if you type that direction. You will use thePPROPScommand, a handy way to store multiple properties in a property list.The name of the property list we will create first is
"ENTRY, the name of the room.
Look at our mansion map. There is only one way to leave the ENTRY. If you go North from the ENTRY, you get to the HALL. If you try to go anywhere else, nothing is there.
PPROPS "ENTRY [NORTH HALL EAST NOTHING SOUTH NOTHING WEST NOTHING]The property list has the property NORTH with a value of HALL. All the other directions have a value of NOTHING.
The Living_Room has rooms in all directions, so its property list will look like this:
PPROPS "LIVING_ROOM [NORTH GAME_ROOM EAST LIBRARY SOUTH HALL WEST DINING_ROOM]Do you see how that works? If you go North from the Living Room, you get to the Game_Room. If you go East, you get to the Library. If you go South, you go back to the Hall. If you go West, you go to the Dining_Room.
Figure out the property list for each room in your mansion and put them all in the
SETUP_MAPprocedure. You’ll have a separate line for the property list for each room with its list of properties showing the direction words that will take you to a different room. Each direction word has either the name of a room or NOTHING. Make sure there is an even number of items in your property list.The property list for each room will eventually contain many different properties.
Now that you have defined where the player can go from each room, you need to create procedures for those direction commands. The directional commands will use a
GO_ROOMprocedure that you will write in just a moment, after you have created these four procedures. Type these procedures into the editor.
TO NORTH
GO_ROOM "NORTH
END
TO EAST
GO_ROOM "EAST
END
TO SOUTH
GO_ROOM "SOUTH
END
TO WEST
GO_ROOM "WEST
ENDThe
GO_ROOMprocedure takes a direction as input, as inGO_ROOM "WEST. The procedure looks like this:
TO GO_ROOM :DIRECTION
MAKE "DIRECTION GPROP :ROOM :DIRECTION
IF :DIRECTION = "NOTHING THEN PRINT [YOU CAN'T GO THAT WAY.] STOP
MAKE "ROOM :DIRECTION
(PRINT [YOU ARE NOW IN THE] :ROOM)
ENDYou can just use these procedures as they are written, but for those who are curious, let’s see how the GO_ROOM procedure works.
The first line uses
GPROP(short forGet Property) to look up the room that is in the direction of the input word in the property list for the current room, stored in the variable :ROOM.
MAKE "DIRECTION GPROP :ROOM :DIRECTION
If you typeGPROP "ENTRY "NORTH, GPROP looks up what room is north of ENTRY. The result is"HALL. So, the instruction above sets the value of :DIRECTION to"HALL.If there isn’t a property for the direction you type, you are told you can’t go that way.
IF :DIRECTION = "NOTHING THEN PRINT [YOU CAN'T GO THAT WAY.] STOPIf there is a room in the direction of the input, then you set that new room to be the current room and tell the player where they are now.
MAKE "ROOM :DIRECTION
(PRINT [YOU ARE NOW IN THE] :ROOM)Let’s see if it works. After creating the
GO_ROOMand the direction word procedures (NORTH,SOUTH,EAST, andWEST) in the Editor, click Run to execute theSETUPprocedure.
If you are in theENTRYand typeSOUTH, what will you see?YOU CAN'T GO THAT WAY.
If you are in theENTRYand typeNORTH, what will you see?YOU ARE NOW IN THE HALL.Don’t worry if you don’t yet fully understand the
GO_ROOMprocedure, as it is a bit complicated. You can just type it in and get it working.After you have entered property lists for all the rooms and you can navigate to and from all the rooms (do lots of testing!), we’ll add objects to find and explore.
Remember to save your program!
Come back in a couple of days to add more to your adventure!
Step 3: Add instructions for the player.
Click to download a PDF of Step 3.
In our game, we give the player some tips on how to explore the adventure. Your directions might be different, but here is how our game starts.
You are in the main entry of the Mystery Mansion.
Type NORTH, SOUTH, EAST, or WEST to go to a different room.
Draw a map of the rooms so you know how to get around easily.
Type WHERE to see your current room.
Type LOOK to see what is in the room.
Type EXPLORE to check out an item.
Type TAKE to move an item into your inventory.
Type INVENTORY to see items you have found.We tell the player where they are and the direction words to use to go from room to room.
We suggest that the player draws a map of the mansion when they discover the rooms so they can easily go to any room they want at any time.
There are five additional commands they can use.
WHEREtells them the current room.
LOOKlets them see what is in the room.
EXPLORElets them see details about what is in the room.
TAKElets them keep some items. Not all items can be taken (more about that later).
INVENTORYtells them what they have taken.In the
SETUPprocedure add these tips. You may also want to start be going toTEXTSCREENmode and erasing any existing text withCLEARTEXT. Your procedure might look something like this:
TO SETUP
SETUP_MAP
MAKE "ROOMS [ENTRY DINING_ROOM LIBRARY ...]
MAKE "ROOM "ENTRY
MAKE "INVENTORY []
TEXTSCREEN
CLEARTEXT
PRINT "|You are in the main entry of the Mystery Mansion.|
PRINT "|Type NORTH, SOUTH, EAST, or WEST to go to a different room.|
PRINT "|Draw a map of the rooms so you know how to get around easily.|
PRINT "|Type WHERE to see your current room.|
PRINT "|Type LOOK to see what is in the room.|
PRINT "|Type EXPLORE to check out an item.|
PRINT "|Type TAKE to move an item into your inventory.|
PRINT "|Type INVENTORY to see items you have found.|
ENDSee how we created a variable called
INVENTORYto store the items you collect? It starts out with a value of an empty list because you haven’t collected anything yet.The last line in the Editor should be
SETUP. That runs the commands in theSETUPprocedure.In this adventure, you aren’t running a main procedure. You are giving toplevel commands in the Listener window. The words you type are names of procedures that run when you tell them to.
If you type a command that the adventure doesn’t know about, such as
NORTHEAST, you will see a message that the word you typed is not a procedure.
Error: NORTHEAST is not a procedureCan you figure out how to write the procedures called
WHEREandINVENTORY? You already know the names of those variables. The procedures with those names just need to print the value of the variables to the Listener window.Tip: If the
INVENTORYvariable is empty, you can tell the player that they haven’t found anything yet.You may wish to add a
TIPScommand that shows the available commands. You can’t use HELP because that is already a primitive.TIPSwould work, though. AddTIPSto the list of available commands in theSETUPprocedure.Remember to save your program!
Come back in a couple of days to learn how to organize your adventure.
A special gift awaits…
At the end of August, we will post our adventure game in the Logo Programming Library.
Coders who send us a completed and (hopefully) bug-free adventure by August 15 will receive a certificate from Terrapin by email. We will choose up to three submitted programs to feature in the Logo Programming Library! We’ll be looking for creativity and clean code.
Use this form to tell us you have completed the adventure: www.terrapinlogo.com/forms/share.html
We’ll take a look at your program, see if it qualifies, and let you know if you are a winner. There might even be a prize for you.
What if you have questions?
If you have any questions about coding your adventure, just ask us. We can look at your program and figure out why things aren’t working as you want. Let us know you would like help with your program and we will be in touch. Use this form: www.terrapinlogo.com/forms/share.html

Shown at the right is a sample map of a mansion. It will serve as our guide as we code the adventure.