import pygame STEP = 44 class Food(): def __init__(self, x, y, surface): self.x = x * STEP self.y = y * STEP self.surface = surface self.image = pygame.image.load("food.png").convert() def draw(self): self.surface.blit(self.image, (self.x, self.y)) class Snake(): def __init__(self, x, y, surface): self.x = [x*STEP] self.y = [y*STEP] # 用两个列表来存储贪吃蛇每个节点的位置 self.length = 1 # 贪吃蛇的长度 self.direction = 0 # 0表示向右, 1表示向下, 2表示向左, 3表示向上 self.image = pygame.image.load("snake.png").convert() # 加载蛇 self.surface = surface self.step = 44 # 运动步长 self.updateCount = 0 # 更新次数 # 虽然有这么多节点,但是有length来控制界面上画出多少蛇的节点 for i in range(1, 100): self.x.append(-100) self.y.append(-100) def draw(self): for i in range(self.length): self.surface.blit(self.image, (self.x[i],self.y[i])) def moveRight(self): self.direction = 0 def moveLeft(self): self.direction = 2 def moveUp(self): self.direction = 3 def moveDown(self): self.direction = 1 def update(self): self.updateCount += 1 if self.updateCount > 2: for i in range(self.length-1, 0, -1): self.x[i] = self.x[i-1] self.y[i] = self.y[i-1] if self.direction == 0: self.x[0] = self.x[0] + self.step # 向右 if self.direction == 1: self.y[0] = self.y[0] + self.step # 向下 if self.direction == 2: self.x[0] = self.x[0] - self.step # 向左 if self.direction == 3: self.y[0] = self.y[0] - self.step # 向上 self.updateCount = 0