Hardware Reference
In-Depth Information
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
Search WWH ::




Custom Search