8.继承游戏对象基类的类

8.游戏场景-继承游戏对象基类的类


8.1 知识点

将要实现的类图

创建墙壁类,继承游戏对象类,墙壁类的构造函数初始化位置。实现墙的绘制方法。

//地图墙壁类 继承游戏对象类
class Wall : GameObject
{
    //地图墙壁类构造函数
    public Wall(int x, int y)
    {
        //直接设置前的位置就行
        pos = new Position(x, y);
    }

    //实现墙的绘制方法
    public override void Draw()
    {
        //设置颜色和输出位置 输出一个墙符号
        Console.SetCursorPosition(pos.x, pos.y);
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("■");
    }
}

创建食物类,继承游戏对象类,食物类构造函数初始化食物类位置,但是不能和蛇的位置重合。实现食物的绘制方法。

//食物类 继承游戏对象类
class Food : GameObject
{
    //食物类构造函数
    public Food(Snake snake)
    {
        //食物的位置不能和蛇重合 要有一定规则的随机出食物的位置
        RandomPos(snake);
    }

    //实现食物的绘制方法
    public override void Draw()
    {            
        //设置颜色和输出位置 输出一个食物符号
        Console.SetCursorPosition(pos.x, pos.y);
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.Write("¤");
    }
            
    //随机位置的行为 行为 和蛇的位置 有关系 有了蛇再来考虑
    public void RandomPos(Snake snake)
    {
        //这个函数的目标 最终还是要设置食物的位置的
        //只是不能和蛇重合
    } 
}

创建蛇身子类和蛇身体类型枚举。蛇身子类构造函数要初始化蛇身体类型和位置。实现蛇身子类的绘制方法,根据蛇身体类型变量 ,设置身体的颜色和对应的身体类型的符号。

/// <summary>
/// 蛇身体类型
/// </summary>
enum E_SnakeBody_Type
{
    /// <summary>
    /// 头
    /// </summary>
    Head,
    /// <summary>
    /// 身体
    /// </summary>
    Body,
}

//蛇身子类 继承游戏对象类
class SnakeBody : GameObject
{
    //蛇身体类型变量 用于判断自己这个蛇身子类的身体类型
    private E_SnakeBody_Type type;

    //蛇身子类构造函数 要初始化蛇身体类型和位置
    public SnakeBody(E_SnakeBody_Type type, int x, int y)
    {
        this.type = type;
        this.pos = new Position(x, y);
    }

    //实现蛇身子类的绘制方法
    public override void Draw()
    {
        //设置位置 根据蛇身体类型变量 设置身体的颜色和对应的身体类型的符号
        Console.SetCursorPosition(pos.x, pos.y);
        Console.ForegroundColor = type == E_SnakeBody_Type.Head ? ConsoleColor.Yellow : ConsoleColor.Green;
        Console.Write(type == E_SnakeBody_Type.Head ? "●" : "◎");
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏