jliddlejths
Posts: 3
Joined: Mon Apr 06, 2020 12:29 pm

Syntax Error

Mon Apr 06, 2020 12:36 pm

Please could you look at the code and see what wrong with it.

It saying syntax error with elif code.

https://drive.google.com/file/d/1in-315 ... sp=sharing

pcmanbob
Posts: 9465
Joined: Fri May 31, 2013 9:28 pm
Location: Mansfield UK

Re: Syntax Error

Mon Apr 06, 2020 6:41 pm

Hi.

If you want help with your code and its error then please post your code by copying and pasting it in to your post , not forgetting to use code tags

Add [code] at the top

code goes here

and [/code] at the bottom.

that way people can download it and test it, and please post the full error message as it will give use more information on which line of code has the error.

A quick look suggests your indentation is off on the elif line
We want information… information… information........................no information no help
The use of crystal balls & mind reading are not supported

DirkS
Posts: 10363
Joined: Tue Jun 19, 2012 9:46 pm
Location: Essex, UK

Re: Syntax Error

Mon Apr 06, 2020 6:55 pm

pcmanbob wrote: A quick look suggests your indentation is off on the elif line
Probably the line *after* elif, starting with 'if'

But there are more problems. The indentation after the 'sys.exit()' cannot be correct. It puts all the code below it inside the 'gameover' procedure, meaning it will never be reached...

pcmanbob
Posts: 9465
Joined: Fri May 31, 2013 9:28 pm
Location: Mansfield UK

Re: Syntax Error

Mon Apr 06, 2020 7:11 pm

DirkS wrote:
Mon Apr 06, 2020 6:55 pm
pcmanbob wrote: A quick look suggests your indentation is off on the elif line
Probably the line *after* elif, starting with 'if'

But there are more problems. The indentation after the 'sys.exit()' cannot be correct. It puts all the code below it inside the 'gameover' procedure, meaning it will never be reached...
The elif is not indented to match the if statement above it either.
We want information… information… information........................no information no help
The use of crystal balls & mind reading are not supported

jliddlejths
Posts: 3
Joined: Mon Apr 06, 2020 12:29 pm

Re: Syntax Error

Tue Apr 07, 2020 5:39 pm

DirkS wrote:
Mon Apr 06, 2020 6:55 pm
pcmanbob wrote: A quick look suggests your indentation is off on the elif line
Probably the line *after* elif, starting with 'if'

But there are more problems. The indentation after the 'sys.exit()' cannot be correct. It puts all the code below it inside the 'gameover' procedure, meaning it will never be reached...
Hi, Below is the full code so you can see it more clearly and test it

code][/code]
#!/usr/bin/env python
# Raspbery 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
if direction == 'left':
snakePosition [0] -= 20
if direction == 'up':
snakePosition [1] -= 20
if direction == 'down':
snakePosition [1] += 20
snakeSegments.insert (0,list(snakePosition))
if snakePosition [0] == raspberryPosition [0] and snakePosition [1] == raspberryPosition [1]:
raspberrySpawned = 0


else:
snakeSegments.pop()
if aspberrySpawned == 0:
x = random.randrange (1,32)
y = random.randrange (1,24)
raspberryPosition = [int (x*20), int (y*20) ]
raspberrySpawned = 1
playSurface.fill (blackColour)
for position in snakeSegments:
pygame.draw.rect (playSurface,whiteColour, Rect (position [0], position [1], 20,20))

pygame.draw.rect (playSurface,redColour,Rect (raspberryPosition [0], raspberryPosition[1], 20,20))
pygame.display.flip()
if snakePosition [0] > 620 or snakePosition[0] < 0:[0]
gameOver()
if snakePosition[1] > 460 or snakePosition[1] < 0:
for snakeBody in snakeSegments[1:]:
if snakePosition[0] == snakeBody and snakePosition[1] == snakeBody[1]:
gameOver()
fpsClock.tick(30)


Thanks
Jamie

User avatar
B.Goode
Posts: 10356
Joined: Mon Sep 01, 2014 4:03 pm
Location: UK

Re: Syntax Error

Tue Apr 07, 2020 5:53 pm

Reposted with working Code tag markup. It seems simple to me...

jliddlejths wrote:
Tue Apr 07, 2020 5:39 pm
DirkS wrote:
Mon Apr 06, 2020 6:55 pm
pcmanbob wrote: A quick look suggests your indentation is off on the elif line
Probably the line *after* elif, starting with 'if'

But there are more problems. The indentation after the 'sys.exit()' cannot be correct. It puts all the code below it inside the 'gameover' procedure, meaning it will never be reached...
Hi, Below is the full code so you can see it more clearly and test it

code][/code]

Code: Select all

#!/usr/bin/env python
# Raspbery 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
                                                            if direction == 'left':
                                                                snakePosition [0] -= 20
                                                                if direction == 'up':
                                                                    snakePosition [1] -= 20
                                                                    if direction == 'down':
                                                                        snakePosition [1] += 20
                                                                        snakeSegments.insert (0,list(snakePosition))
                                                                        if snakePosition [0] == raspberryPosition [0] and snakePosition [1] == raspberryPosition [1]:
                                                                            raspberrySpawned = 0


                                                        else:
                                                            snakeSegments.pop()
                                                            if aspberrySpawned == 0:
                                                                x = random.randrange (1,32)
                                                                y = random.randrange (1,24)
                                                                raspberryPosition = [int (x*20), int (y*20) ]
                                                                raspberrySpawned = 1
                                                                playSurface.fill (blackColour)
                                                                for position in snakeSegments:
                                                                    pygame.draw.rect (playSurface,whiteColour, Rect (position [0], position [1], 20,20))

                                                                    pygame.draw.rect (playSurface,redColour,Rect (raspberryPosition [0], raspberryPosition[1], 20,20))
                                                                    pygame.display.flip()
                                                                    if snakePosition [0] > 620 or snakePosition[0] < 0:[0] 
                                                                        gameOver()
                                                                        if snakePosition[1] > 460 or snakePosition[1] < 0:
                                                                            for snakeBody in snakeSegments[1:]:
                                                                                if snakePosition[0] == snakeBody and snakePosition[1] == snakeBody[1]:
                                                                                    gameOver()
                                                                                    fpsClock.tick(30)
                                                                                    
                                                        
Thanks
Jamie

User avatar
B.Goode
Posts: 10356
Joined: Mon Sep 01, 2014 4:03 pm
Location: UK

Re: Syntax Error

Tue Apr 07, 2020 5:57 pm

I would expect the Raspberry Pi User Guide and it's co-author Gareth Halfacree to be reliable. I therefore suspect some error has occurred in acquiring the script.

jliddlejths
Posts: 3
Joined: Mon Apr 06, 2020 12:29 pm

Re: Syntax Error

Tue Apr 07, 2020 6:10 pm

B.Goode wrote: I would expect the Raspberry Pi User Guide and it's co-author Gareth Halfacree to be reliable. I therefore suspect some error has occurred in acquiring the script.
I now fix the code but now I get a different message:
I get the Raspberry Pi Snake come up but it is a blank screen when I close it, I get this error:
Traceback (most recent call last):
File “/home/pi/snake3.py” , line 38, in <module>
for event in pygame.event.get():
error: video system not initialized

Return to “Python”