跳至正文
View Categories

1 min read

贪吃蛇4 #

  1. 贪吃蛇类的创建与初始化
  2. 贪吃蛇类的界面显示
  3. 贪吃蛇类的运动设置

贪吃蛇类的创建与初始化 #

本小节主要介绍贪吃蛇类的创建,长度,初始方向,运动步长及加载

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]))

贪吃蛇类的界面显示 #

本小节主要介绍将贪吃蛇加入到窗口中显示的方法。

在class SnakeGame()的init()函数中的self.food = Food(5, 5, self._display_surf)后添加贪吃蛇类图片属性,并进行初始化。

在class SnakeGame()中的render()函数的self.food.draw()后面添加贪吃蛇的渲染,并通过run()函数中调用self.render()进行窗口更新

    def init(self):
        #self.food = Food(5, 5, self._display_surf)
        self.snake = Snake(1, 1, self._display_surf)#增加贪吃蛇类图片属性,并初始化位置

    def render(self):
        #self.food.draw()        # 画出食物
        self.snake.draw()       # 画出蛇
        #pygame.display.flip()   # 刷新屏幕

贪吃蛇类的运动设置 #

本小节主要介绍贪吃蛇类的运动设置。同时,在class SnakeGame()中的loop()函数中进行调用更新。

class Snake():
    #根据蛇的运动方向和单次运动的距离计算出蛇每个节点的最新的位置
    def update(self):
        self.updateCount += 1
        if self.updateCount > 2:#每2个0.05s运动一次,监听时间短,更灵敏
            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

#class SnakeGame():

    def loop(self):#使用loop进行更新
        self.snake.update()

小结 #

本节主要介绍了贪吃蛇游戏中贪吃蛇类的创建、显示及运动设置