5.不变的红墙

5.游戏场景-不变的红墙


5.1 知识点

主函数外 Class 语句块内

创建游戏场景函数

static void GameScene(int w, int h, ref E_SceneType nowSceneType)
{
    // 控制台宽高,场景标识变量为开始场景和结束场景函数的参数
    // 场景标识变量添加ref修饰,使场景标识的值能在函数内部被修改时生效
}

创建画墙函数,在游戏场景函数中调用

static void DrawWall(int w, int h)
{
    // Your code here
}

设置墙颜色

Console.ForegroundColor = ConsoleColor.Red;

画墙

// 横着的墙
for (int i = 0; i < w; i += 2)
{
    // 最上方的墙
    Console.SetCursorPosition(i, 0);
    Console.Write("■");
    // 最下方的墙
    Console.SetCursorPosition(i, h - 1);
    Console.Write("■");

    // 中间的墙
    Console.SetCursorPosition(i, h - 6);
    Console.Write("■");
    Console.SetCursorPosition(i, h - 11);
    Console.Write("■");
}

// 竖着的墙
for (int i = 0; i < h; i++)
{
    // 最左边
    Console.SetCursorPosition(0, i);
    Console.Write("■");
    // 最右边
    Console.SetCursorPosition(w - 2, i);
    Console.Write("■");
}

文字信息

Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(2, h - 10);
Console.Write("□:普通格子");

Console.ForegroundColor = ConsoleColor.Blue;
Console.SetCursorPosition(2, h - 9);
Console.Write("‖:暂停,一回合不动");

Console.ForegroundColor = ConsoleColor.Red;
Console.SetCursorPosition(26, h - 9);
Console.Write("●:炸弹,倒退5格");

Console.ForegroundColor = ConsoleColor.Yellow;
Console.SetCursorPosition(2, h - 8);
Console.Write("¤:时空隧道,随机倒退,暂停,换位置");

Console.ForegroundColor = ConsoleColor.Cyan;
Console.SetCursorPosition(2, h - 7);
Console.Write("★:玩家");

Console.ForegroundColor = ConsoleColor.Magenta;
Console.SetCursorPosition(12, h - 7);
Console.Write("▲:电脑");

Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.SetCursorPosition(22, h - 7);
Console.Write("◎:玩家和电脑重合");

Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(2, h - 5);
Console.Write("按任意键开始扔色子");

主函数内

场景切换的 switch 分支内,调用游戏场景函数

// 构建场景切换的死循环
while (true)
{
    // 构建场景切换的 switch 分支,判断当前场景标识变量的值,不同场景执行不同的逻辑
    switch (nowSceneType)
    {
        case E_SceneType.Begin:
            // 开始场景逻辑
            Console.Clear();
            // 来书写开始场景相关的逻辑即可

            // 场景切换的 switch 分支内,调用开始场景和结束场景函数
            BeginOrEndScene(w, h, ref nowSceneType);
            break;

        case E_SceneType.Game:
            // 游戏场景逻辑
            Console.Clear();
            // 通过函数来处理游戏场景的逻辑内容

            // 场景切换的 switch 分支内,调用游戏场景函数
            GameScene(w, h, ref nowSceneType);
            break;

        case E_SceneType.End:
            // 结束场景逻辑
            Console.Clear();
            BeginOrEndScene(w, h, ref nowSceneType);
            break;

        default:
            break;
    }
}

5.2 知识点代码

主函数外 class 语句块内

//创建游戏场景函数
//控制台宽 高 场景标识变量为开始场景和结束场景函数的参数
//场景标识变量添加 ref 修饰 使场景标识的值能在函数内部被修改时生效
static void GameScene(int w, int h, ref E_SceneType nowSceneType)
{
    //调用画墙函数 绘制不变内容(红墙 提示等等)
    DrawWall(w, h);
    
    //在这里添加处理游戏场景的其他逻辑
}
 
//创建画墙函数 在游戏场景函数中调用
static void DrawWall(int w, int h)
{
    //设置墙颜色
    Console.ForegroundColor = ConsoleColor.Red;

    //画墙
    //横着的墙
    for (int i = 0; i < w; i += 2)
    {
        //最上方的墙
        Console.SetCursorPosition(i, 0);
        Console.Write("■");
        //最下方的墙
        Console.SetCursorPosition(i, h - 1);
        Console.Write("■");

        //中间的墙
        Console.SetCursorPosition(i, h - 6);
        Console.Write("■");
        Console.SetCursorPosition(i, h - 11);
        Console.Write("■");
    }

    //竖着的墙
    for (int i = 0; i < h; i++)
    {
        //最左边
        Console.SetCursorPosition(0, i);
        Console.Write("■");
        //最右边
        Console.SetCursorPosition(w - 2, i);
        Console.Write("■");
    }

    //文字信息
    Console.ForegroundColor = ConsoleColor.White;
    Console.SetCursorPosition(2, h - 10);
    Console.Write("□:普通格子");

    Console.ForegroundColor = ConsoleColor.Blue;
    Console.SetCursorPosition(2, h - 9);
    Console.Write("‖:暂停,一回合不懂");

    Console.ForegroundColor = ConsoleColor.Red;
    Console.SetCursorPosition(26, h - 9);
    Console.Write("●:炸弹,倒退5格");

    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.SetCursorPosition(2, h - 8);
    Console.Write("¤:时空隧道,随机倒退,暂停,换位置");

    Console.ForegroundColor = ConsoleColor.Cyan;
    Console.SetCursorPosition(2, h - 7);
    Console.Write("★:玩家");

    Console.ForegroundColor = ConsoleColor.Magenta;
    Console.SetCursorPosition(12, h - 7);
    Console.Write("▲:电脑");

    Console.ForegroundColor = ConsoleColor.DarkGreen;
    Console.SetCursorPosition(22, h - 7);
    Console.Write("◎:玩家和电脑重合");

    Console.ForegroundColor = ConsoleColor.White;
    Console.SetCursorPosition(2, h - 5);
    Console.Write("按任意键开始扔色子");
}

主函数内

//构建场景切换的死循环
while (true)
{
    //构建场景切换的 switch 分支 判断当前场景标识变量的值 不同场景执行不同的逻辑
    switch (nowSceneType)
    {
        case E_SceneType.Begin:
            //开始场景逻辑
            Console.Clear();
            //来书写 开始场景相关的逻辑即可

            //场景切换的 switch 分支内 调用开始场景和结束场景函数
            BeginOrEndScene(w, h, ref nowSceneType);
            break;

        case E_SceneType.Game:
            //游戏场景逻辑
            Console.Clear();
            //通过函数来处理游戏场景的逻辑内容

            //场景切换的 switch 分支内 调用游戏场景函数
            GameScene(w, h, ref nowSceneType);
            break;

        case E_SceneType.End:
            //结束场景逻辑
            Console.Clear();
            BeginOrEndScene(w, h, ref nowSceneType);
            break;

        default:
            break;
    }
}


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

×

喜欢就点赞,疼爱就打赏