
P A R T I I I
P R O G R A M M I N G W I T H T H E R A S P B E R R Y P I
188
a
QUIT
message (which happens when the user presses the Escape key). The two lines
beneath that should be familiar from the
gameOver
function: they tell pygame and Python
to close down and exit.
The line beginning
elif
is used to extend
if
loops. Short for
else if
, an
elif
instruction is
evaluated when a previous
if
instruction was found to be false. In this case, the
elif
instruction is used to see if pygame is reporting a
KEYDOWN
event, which is returned when
the user is pressing a key on the keyboard. As with the
if
instruction, code to be executed
when an
elif
is true should be indented by an additional four spaces plus whatever inden-
tation the
elif
instruction itself has. Type the following lines to give the
elif
instruction
something to do when the user presses a key:
if event.key == K_RIGHT or event.key == ord(‘d’):
changeDirection = ‘right’
if event.key == K_LEFT or event.key == ord(‘a’):
changeDirection = ‘left’
if event.key == K_UP or event.key == ord(‘w’):
changeDirection = ‘up’
if event.key == K_DOWN or event.key == ord(‘s’):
changeDirection = ‘down’
if event.key == K_ESCAPE:
pygame.event.post(pygame.event.Event(QUIT))
These instructions modify the value of the
changeDirection
variable, used to control the
direction the player’s snake is travelling during the game. Using
or
with an
if
statement
allows more than one evaluation to be made. In this case, it provides two ways of controlling
the snake: the player can use the cursor keys, or the W, A, S and D keys to make the snake go
up, right, down or left. Until a key is pressed, the snake travels to the right according to the
value set for
changeDirection
at the start of the program.
If you look back at the variables you initialised at the start of the program, you’ll see that
there’s another variable called
direction
. This is used alongside
changeDirection
to see
if the instruction the user has given is valid. The snake should not be allowed to turn imme-
diately back on itself—if it does, the snake dies and the game is over. To prevent this from
happening, the direction requested by the player—stored in
changeDirection
—is com-
pared to the current direction in which the snake is travelling—stored in
direction
. If
they are opposite directions, the instruction is ignored and the snake continues in the same
direction as before. Type the following lines to set up the comparisons:
if changeDirection == ‘right’ and not direction == ‘left’:
direction = changeDirection
Summary of Contents for A
Page 1: ......
Page 2: ......
Page 3: ...Raspberry Pi User Guide 2nd Edition...
Page 4: ......
Page 5: ...Raspberry Pi User Guide 2nd Edition Eben Upton and Gareth Halfacree...
Page 10: ......
Page 26: ...R A S P B E R R Y P I U S E R G U I D E S E C O N D E D I T I O N 10...
Page 28: ......
Page 29: ...Chapter 1 Meet the Raspberry Pi...
Page 37: ...Chapter 2 Getting Started with the Raspberry Pi...
Page 56: ......
Page 57: ...Chapter 3 Linux System Administration...
Page 79: ...Chapter 4 Troubleshooting...
Page 89: ...Chapter 5 Network Configuration...
Page 109: ...Chapter 6 The Raspberry Pi Software Configuration Tool...
Page 122: ......
Page 123: ...Chapter 7 Advanced Raspberry Pi Configuration...
Page 140: ......
Page 141: ...Chapter 8 The Pi as a Home Theatre PC...
Page 151: ...Chapter 9 The Pi as a Productivity Machine...
Page 160: ......
Page 161: ...Chapter 10 The Pi as a Web Server...
Page 172: ......
Page 173: ...Chapter 11 An Introduction to Scratch...
Page 189: ...Chapter 12 An Introduction to Python...
Page 216: ......
Page 218: ......
Page 219: ...Chapter 13 Learning to Hack Hardware...
Page 234: ......
Page 235: ...Chapter 14 The GPIO Port...
Page 249: ...Chapter 15 The Raspberry Pi Camera Module...
Page 265: ...Chapter 16 Add on Boards...
Page 280: ......
Page 281: ...Appendix A Python Recipes...
Page 287: ...Appendix B Raspberry Pi Camera Module Quick Reference...
Page 293: ...Appendix C HDMI Display Modes...