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 youre 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, dont press Enter until you reach the end that doesnt 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