Operation Manual
Appendix A: Python Recipes
The following recipes provide the program code for Example 3 and Example 4 in Chapter 11, “An Introduction to Python”,
and a sample solution for the combined input-output program suggested in Chapter 12, “Hardware Hacking”. Each recipe is also
available for download from the Raspberry Pi User Guide website at http://www.wiley.com/go/raspberrypiuserguide.
If you’re typing the code in by hand, look out for the symbol: this indicates that the line is wrapped due to space constraints in
the book. If you see the symbol at the end of a line, don’t press Enter until you reach the end that doesn’t have a symbol present.
Raspberry Snake (Chapter 11, Example 3)
#!/usr/bin/env python
# Raspberry Snake
# Written by Gareth Halfacree for the Raspberry Pi User Guide
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
fpsClock = pygame.time.Clock()
playSurface = pygame.display.set_mode((640, 480))
pygame.display.set_caption(‘Raspberry Snake’)
redColour = pygame.Color(255, 0, 0)
blackColour = pygame.Color(0, 0, 0)
whiteColour = pygame.Color(255, 255, 255)
greyColour = pygame.Color(150, 150, 150)
snakePosition = [100,100]
snakeSegments = [[100,100],[80,100],[60,100]]
raspberryPosition = [300,300]
raspberrySpawned = 1
direction = ‘right’
changeDirection = direction
def gameOver():
gameOverFont = pygame.font.Font(‘freesansbold.ttf’, 72)
gameOverSurf = gameOverFont.render
(‘Game Over’, True, greyColour)
gameOverRect = gameOverSurf.get_rect()
gameOverRect.midtop = (320, 10)
playSurface.blit(gameOverSurf, gameOverRect)
pygame.display.flip()
time.sleep(5)
pygame.quit()
sys.exit()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
elif event.type == KEYDOWN:
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))
if changeDirection == ‘right’ and not direction == ‘left’:
direction = changeDirection
if changeDirection == ‘left’ and not direction == ‘right’:
direction = changeDirection
if changeDirection == ‘up’ and not direction == ‘down’:
direction = changeDirection
if changeDirection == ‘down’ and not direction == ‘up’:
direction = changeDirection
if direction == ‘right’:
snakePosition[0] += 20