Python Forum

Full Version: Pygame Snake Game Help Please
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
My computer science assignment is creating a snake game using pygame and I have to use images for my sprites. I don't know how to move the images of the snake's head and body though, like make them seem connected. My code is below.

This is the main file

# I - Import and Initialize
import pygame, snakeGameTestingClasses
pygame.init()
screen = pygame.display.set_mode((640, 480))
def main():
    '''This function defines the 'mainline logic' for our game.'''
    # Display
    pygame.display.set_caption("Lots Of Cherries")
    # Entities
    background = pygame.Surface(screen.get_size())
    background.fill((255, 255, 255))
    screen.blit(background, (0, 0))

    # Create 10 random bricks
    snake = snakeGameTestingClasses.Snake(screen)
    snake_body = snakeGameTestingClasses.SnakeBody(screen)
    allSprites = pygame.sprite.Group(snake, snake_body)
    # ACTION
    # Assign
    keepGoing = True
    clock = pygame.time.Clock()
    not_twice = 1
    # Loop
    while keepGoing:
        # Time
        clock.tick(30)
        # Events
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                keepGoing = False
                
            elif event.type == pygame.MOUSEBUTTONDOWN:
                print (pygame.mouse.get_pos())
                    
        # Refresh screen
        allSprites.clear(screen, background)
        allSprites.update()
        allSprites.draw(screen)
        pygame.display.flip()
        # Close the game window
    pygame.quit()
# Call the main function
main()

This is the module with the classes
import pygame, random
class Snake(pygame.sprite.Sprite):
    '''Our Cherry class inherits from the Sprite class'''
    def __init__(self, screen):
        # Call the parent __init__() method
        pygame.sprite.Sprite.__init__(self)
        # Set the image and rect attributes for the cherries
        self.up = pygame.image.load("head_up2.png") 
        self.left = pygame.image.load("head_left.png") 
        self.image = pygame.image.load("head_left.png") 
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect = self.image.get_rect()
        self.screen = screen
        self.rect.centerx = 400
        self.rect.centery = 400
        
    def go_left(self):
        self.image = self.left
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect.left -= 5
        if (self.rect.left < 0):
            self.rect.left = self.screen.get_width()
            
    def go_up(self):
        self.image = self.up
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect.top -= 5
        if self.rect.top < 0:
            self.rect.top = self.screen.get_height()
            
    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            self.go_left()
            
        elif keys[pygame.K_UP]:
            self.go_up()
        
class SnakeBody(Snake):
    def __init__(self, screen):
        pygame.sprite.Sprite.__init__(self)
        self.left = pygame.image.load("body_left.png")
        self.up = pygame.image.load("body_up2.png")
        self.image = pygame.image.load("body_left.png")
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect = self.image.get_rect()
        self.rect.centerx = 433
        self.rect.centery = 400
        self.screen = screen
  
    def go_left(self):
        self.image = self.left
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect.left -= 5
        if (self.rect.left < 0):
            self.rect.left = self.screen.get_width()

    def go_up(self):
        self.image = self.up
        self.image = pygame.transform.scale(self.image,(45,45))
        self.rect.top -= 5
        if self.rect.top < 0:
            self.rect.top = self.screen.get_height()
        
        
    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            self.go_left()

        elif keys[pygame.K_UP]:
            self.go_up()