返回

贪吃蛇小游戏(四):实现游戏控制主流程

前端

前情回顾

在前面三篇文章中,我们实现了地图类、食物类以及蛇类相关的一些逻辑封装。今天我们来实现游戏控制的主流程类 Game。

实现游戏主流程控制类

游戏类主要负责的是游戏相关的一些逻辑的封装,也就是按照游戏的规则来控制游戏进行。

class Game:
    def __init__(self):
        self.map = Map()  # 创建地图对象
        self.food = Food()  # 创建食物对象
        self.snake = Snake()  # 创建蛇对象

    def start(self):
        # 初始化游戏
        self.map.draw()  # 绘制地图
        self.food.generate()  # 生成食物
        self.snake.draw()  # 绘制蛇

        # 游戏主循环
        while True:
            # 获取键盘输入
            key = input()

            # 根据键盘输入控制蛇移动
            if key == 'w':
                self.snake.move_up()
            elif key == 's':
                self.snake.move_down()
            elif key == 'a':
                self.snake.move_left()
            elif key == 'd':
                self.snake.move_right()

            # 检查蛇是否吃到食物
            if self.snake.head == self.food.position:
                # 蛇吃到食物,分数加一
                self.snake.score += 1

                # 重新生成食物
                self.food.generate()

            # 检查蛇是否撞墙或撞到自己
            if self.snake.is_crash():
                # 游戏结束
                break

            # 绘制地图、食物和蛇
            self.map.draw()
            self.food.draw()
            self.snake.draw()

        # 游戏结束,打印分数
        print('游戏结束,你的分数是:', self.snake.score)

结语

本节我们实现了游戏控制主流程类 Game,封装了游戏相关逻辑,实现了游戏的主循环,可以控制蛇移动、吃食物以及判断游戏是否结束。在下一节中,我们将实现一个更加完整的贪吃蛇游戏,包括图形界面、分数显示等功能。