import pygame, time, random class SnakeGame: def __init__(self): pygame.init() self.width, self.height = 600, 400 self.screen = pygame.display.set_mode((self.width, self.height)) pygame.display.set_caption('The Snake Game v2') self.clock = pygame.time.Clock() self.x, self.y = 200, 200 self.val_x, self.val_y = 10, 0 self.font = pygame.font.SysFont('bahnschrift', 25) self.food_x, self.food_y = self.random_food_position() self.body = [(self.x, self.y)] self.var_game_over = False def random_food_position(self): return random.randrange(100, self.width-210)//10*10, random.randrange(100, self.height-10)//10*10 def screens(self): self.screen.fill((0, 204, 204)) pygame.draw.rect(self.screen, (0, 0, 0), [0, 0, 400, 400]) pygame.draw.rect(self.screen, (255, 0, 0), [self.food_x, self.food_y, 10, 10]) pygame.draw.rect(self.screen, (255, 255, 255), [0, 0, 400, 400], 10) pygame.draw.rect(self.screen, (255, 255, 255), [390, 0, 210, 400], 10) def game_over(self): if self.x == 0 or self.x == 390 or self.y == 0 or self.y == 390: self.screen.fill((0, 0, 0)) pygame.draw.rect(self.screen, (255, 255, 255), [0, 0, 400, 400], 10) msg = self.font.render("Game Over!", True, [0, 255, 255]) self.screen.blit(msg, [130, 200]) pygame.display.update() time.sleep(2) pygame.quit() quit() def snake(self): self.x += self.val_x self.y += self.val_y if (self.x, self.y) in self.body: self.var_game_over = True self.body.append((self.x, self.y)) if self.food_x == self.x and self.food_y == self.y: while (self.food_x, self.food_y) in self.body: self.food_x, self.food_y = self.random_food_position() else: del self.body[0] self.game_over() self.screens() score = self.font.render("Score: " + str(len(self.body)-1), True, (255, 255, 0)) self.screen.blit(score, [440, 10]) for (i, j) in self.body: pygame.draw.rect(self.screen, (0, 0, 255), [i, j, 10, 10]) pygame.display.update() def run(self): while True: if self.var_game_over: msg = self.font.render("Game Over!", True, [0, 255, 255]) self.screen.blit(msg, [130, 200]) pygame.display.update() time.sleep(2) pygame.quit() quit() self.clock.tick(10) events = pygame.event.get() for event in events: if event.type == pygame.QUIT: pygame.quit() quit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT and self.val_x != 10: self.val_x = -10 self.val_y = 0 elif event.key == pygame.K_RIGHT and self.val_x != -10: self.val_x = 10 self.val_y = 0 elif event.key == pygame.K_UP and self.val_y != 10: self.val_x = 0 self.val_y = -10 elif event.key == pygame.K_DOWN and self.val_y != -10: self.val_x = 0 self.val_y = 10 self.snake() if __name__ == "__main__": game = SnakeGame() game.run()