Jan-15-2023, 09:45 PM
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
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()