Exercise 8a: Move the sprite using the keyboard
In this exercise you will build the program below.
Use the up arrow to speed up, the down arrow to slow down, and the
left and right arrows to turn.
Before we do the scripts, import the image below into the background
of the stage, or make your own as described in the next paragraph.
If you choose to use the below image, first save the image into your personal folder. Then select
the icon marked 'stage' in the lower right corner of the Scratch
window, click the Backgrounds tab in the centre panel, then click
the import button. Import the picture you just saved into your
Scratch project. Delete the white background by clicking the X next
to it.
Make your own racetrack if you like - simply select the stage icon
in the sprite list in the bottom right corner of Scratch, then click
the Backgrounds tab at the top of the scripts area (the middle
panel) then click the Edit button of the existing white background.
Be careful not to edit a sprite costume by mistake, since that's
not the same as editing the background of the stage.

Racetrack design by Mr. Ward!!
Now you can import this picture to use as the car. First download
a copy of the picture
to your
folder. This picture is in
GIF format, not the usual JPEG
format. An advantage of the GIF format is that the image can have
transparent parts and that is the case for this image - the car
is surrounded by a transparent area. If we had used a JPEG image
then we would be importing a picture of a car embedded in a very
obvious rectangle of colour which we would then have to erase in the
Scratch image editor. Once you have saved a copy of this image into
your personal folder you can import it into Scratch as a new sprite
by clicking the button 'Choose new sprite from file'.
Rename the car sprite as 'car' at the top of the scripts area.
Shrink the sprite using the 'shrink sprite' tool or, to make sure
your sprite is the same size as mine, open the 'Looks' group in the
left panel, insert the value 28 in the 'Set size to ... %' block and
then click this block once to set the size of the sprite to 28% of
its original size.
Once you have imported the car image into Scratch you will notice a
slight problem - the car is not pointing in the forward direction;
You can tell that by looking at the top of the scripts area - you
will see this:
and we note that
the car is not pointing in the blue (forward) direction. Solution:
open the car image for editing (click
'Edit' in the costumes tab). The problem is that the 'forward' side
of the image is the right side of the sprite in the editor window so
you will need to rotate the sprite 90° clockwise using the relevant
tool. Also click the 'Set costume centre' and click in the centre of
the car - this 'centre' is the point about which the car will
turn. Delete the cat sprite (right-click and choose delete) since we
won't be using it.
Now we can work on the scripts for the car sprite, which should
still be selected. The program uses a variable called speed
(it's just a name - we could just as well have called it 'hedgehog'
as far as Scratch is concerned), so you
will first need to create this variable by opening the variables
group and clicking 'Make a variable'. Name the new variable 'speed'
and make it available to this sprite only. Now you can create the
following five scripts. Try to understand how each script works.
This program uses a 'forever loop' which continues
looping forever or until you click the red flag. Inside the forever
loop is a block that makes the car move forward 'speed' steps, so
the higher the speed the bigger the jumps that the car moves
forwards. I'm not sure the next line is really needed - I saw it in
someone else's program so I thought I should include it too. Maybe
it is there to reduce the speed of the car, or maybe to ensure that
the program behaves the same way no matter how fast the computer the
computer is that you run it on? Anyway, it seems to work ok with
this line in.
You are also using
for the first time an 'if' block. In this case the 'if' block checks
whether the speed is greater than zero and only runs the 'change
speed' block if this condition is true. So the speed is only reduced if
it is greater than zero, to make sure the car never goes
backwards (negative speed).

If you open the 'variable' group in the left panel
then you can check the box next to the 'speed' variable to display
its value on the stage. Try double-clicking this display on the
stage several times to see the different appearances that are
possible.
Click the green flag to run the program and check
that the car moves ok. Of course the car pays no attention to the
track at the moment because we have not written that into our
program but Scratch is very good at detecting collisions so it
should be easy to detect a 'collision' of the car with the green
grass. This feature of Scratch is good news but it is important to
know that collision detection is much more difficult in normal
programming languages such as Visual Basic or Java.
Scratch can detect collisions in several different
ways:
We will use the second method here and detect when
the car sprite touches the green colour like this (leave the other
stacks unchanged):
There are two changes here: a 'reset timer'
block has been added near the top and an 'if' block has been
added to deal with the collision. To set the colour in the 'touching
colour' block first click the coloured square then click the green
colour on the stage with the colour picker that appears.
The 'if' block simply sets the speed of the car to 1
every time it detects that the car is touching the grass.
Also open the 'sensing' group in the left panel and
check the box next to the 'timer' variable to display its value on
the stage. The timer will be reset to zero each time the green flag
is clicked.
Try the program now. I find it playable enough but
I'm sure you can think of many ways to make it better. Indeed your
grade will depend largely on how much you can improve the basic
game. Here are some suggestions: