8.玩家和电脑结构体

8.游戏场景-玩家和电脑结构体


8.1 知识点

class 语句块外 namespace 语句块内

创建玩家类型枚举

/// <summary>
/// 玩家类型枚举
/// </summary>
enum E_PlayerType
{
    /// <summary>
    /// 玩家
    /// </summary>
    Player,
    /// <summary>
    /// 电脑
    /// </summary>
    Computer,
}

创建玩家结构体

struct Player
{
    // 玩家结构体变量
    
    // 玩家类型
    public E_PlayerType type;
    // 当前所在地图哪一个索引的格子
    public int nowIndex;
    // 是否暂停的标识
    public bool isPause;
    
    // 玩家结构体构造函数
    public Player(int index, E_PlayerType type)
    {
        nowIndex = index;
        this.type = type;
        isPause = false;
    }
    
    /// <summary>
    /// 绘制当前玩家函数
    /// </summary>
    /// <param name="mapInfo">传入地图</param>
    public void Draw(Map mapInfo)
    {
        // 必须要先得到地图才能够得到我在地图上的哪一个格子
        // 从传入的地图中得到格子信息
        Grid grid = mapInfo.grids[nowIndex];
        
        // 设置位置
        Console.SetCursorPosition(grid.pos.x, grid.pos.y);
        
        // 画 设置颜色 设置图标
        switch (type)
        {
            case E_PlayerType.Player:
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("★");
                break;
            case E_PlayerType.Computer:
                Console.ForegroundColor = ConsoleColor.Magenta;
                Console.Write("▲");
                break;
        }
    }
}

class 语句块内 主函数外

创建绘制玩家和电脑函数

/// <summary>
/// 
/// </summary>
/// <param name="player">玩家</param>
/// <param name="computer">电脑</param>
/// <param name="map">地图</param>
static void DrawPlayer(Player player, Player computer, Map map)
{
    // 重合时
    if (player.nowIndex == computer.nowIndex)
    {
        // 得到重合的位置 画出重合图案
        Grid grid = map.grids[player.nowIndex];
        Console.SetCursorPosition(grid.pos.x, grid.pos.y);
        Console.ForegroundColor = ConsoleColor.DarkGreen;
        Console.Write("◎");
    }
    // 不重合的时候
    else
    {
        // 逐个画出玩家和电脑
        player.Draw(map);
        computer.Draw(map);
    }
}

class 语句块内 主函数外 游戏场景逻辑函数内

创建玩家和电脑

Player player = new Player(0, E_PlayerType.Player);
Player computer = new Player(0, E_PlayerType.Computer);

绘制玩家和电脑

DrawPlayer(player, computer, map);

8.2 知识点代码

class语句块外 namespace语句块内

//创建玩家类型枚举
/// <summary>
/// 玩家类型枚举
/// </summary>
enum E_PlayerType
{
    /// <summary>
    /// 玩家
    /// </summary>
    Player,
    /// <summary>
    /// 电脑
    /// </summary>
    Computer,
}

//创建玩家结构体
struct Player
{
    //玩家结构体变量

    //玩家类型
    public E_PlayerType type;
    //当前所在地图哪一个索引的格子
    public int nowIndex;
    //是否暂停的标识
    public bool isPause;

    //玩家结构体构造函数
    public Player(int index, E_PlayerType type)
    {
        nowIndex = index;
        this.type = type;
        isPause = false;
    }

    /// <summary>
    /// 绘制当前玩家函数
    /// </summary>
    /// <param name="mapInfo">传入地图</param>
    public void Draw(Map mapInfo)
    {
        //必须要先得到地图 才能够 得到我在地图上的哪一个格子
        //从传入的地图中 得到 格子信息
        Grid grid = mapInfo.grids[nowIndex];

        //设置位置
        Console.SetCursorPosition(grid.pos.x, grid.pos.y);

        //画 设置颜色 设置图标
        switch (type)
        {
            case E_PlayerType.Player:
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("★");
                break;
            case E_PlayerType.Computer:
                Console.ForegroundColor = ConsoleColor.Magenta;
                Console.Write("▲");
                break;
        }
    }
}

class语句块内 主函数外

//创建绘制玩家和电脑函数
/// <summary>
/// 
/// </summary>
/// <param name="player">玩家</param>
/// <param name="computer">电脑</param>
/// <param name="map">地图</param>
static void DrawPlayer(Player player, Player computer, Map map)
{
    //重合时
    if (player.nowIndex == computer.nowIndex)
    {
        //得到重合的位置 画出重合图案
        Grid grid = map.grids[player.nowIndex];
        Console.SetCursorPosition(grid.pos.x, grid.pos.y);
        Console.ForegroundColor = ConsoleColor.DarkGreen;
        Console.Write("◎");
    }
    //不重合的时候
    else
    {
        //逐个画出玩家和电脑
        player.Draw(map);
        computer.Draw(map);
    }
}

class语句块内 主函数外 游戏场景逻辑函数内

//创建玩家和电脑
Player player = new Player(0, E_PlayerType.Player);
Player computer = new Player(0, E_PlayerType.Computer);
//绘制玩家和电脑
DrawPlayer(player, computer, map);


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

×

喜欢就点赞,疼爱就打赏