---
title: "Activity: Prison Escape"
date: "2021-06-03"
categories: ["Activities", "All"]
tags: ["Colour Sensors", "Branching", "Iteration", "Motors", "Intermediate"]
codingSkills: ["Branching", "Iteration"]
roverConcepts: ["Colour", "Motors"]
excerpt: "Learn branching and iteration using the colour sensors and motors."
featuredImage: "/images/resources/prison-escape.png"
---


Use the colour sensors to find and drive through the gap in the box. Rovers start in the middle facing a random direction and must leave through the gap, they cannot drive over the lines.

### Activity Demonstration

<iframe width="560" height="315" src="https://www.youtube.com/embed/uYk3tOwX6rw" title="Prison Escape Activity Demonstration" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen></iframe>

### Setup

Use tape on a table or floor or a printed arena to create an outline. It doesn't matter what colour the tape or surface is as long as they contrast to make it easy to detect with the colour sensors. Make sure the gap you leave in the wall is large enough for the rover the move through.

The same code should work no matter where the rover is placed to start. Do not hard code all distances in your solution.

### Here’s Our Approach

There are multiple ways to solve this challenge. This starter approach simply moves the rover forward until it detects the wall. If we detect the wall it means we must reverse and change direction. This cycle repeats until the rover finds the exit. You can add randomness to the turning or some other strategy to find the exit faster.

#### Stage 1

Use an IF Statement block with a condition that checks if the colour sensor sees the tape which is brighter than the floor. If the rover does detect the tape is underneath it, it knows it has hit a wall. We use motor blocks to go backward then turn.

#### **Stage 2**

When our rover does not see the tape we must just use a motor block to set the rover to move forward slowly in the ELSE branch.

#### **Stage 3**

We want to repeat this behaviour until the rover finds the exit so we put all our code in a repeat while true loop.

![](/images/content/907fa8-screenshot-2023-10-31-083156.png)

Example Code
