Python Forum
Pygame Snake Game Help Please
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pygame Snake Game Help Please
#1
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()
Yoriz write Jan-15-2023, 09:53 PM:
Please post all code, output and errors (in their entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  School Work Assignment: Snake Game DarksideMoses 6 5,156 Apr-29-2018, 10:56 PM
Last Post: DarksideMoses

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020