7.开始场景

7.开始场景


7.1 知识点

设置开始场景标题

Console.SetCursorPosition(w / 2 - 7, 8);
Console.Write("韬老狮营救公主");

设置当前选项的编号变量并进行初始化

// 0是开始游戏,1是退出游戏
int nowSelIndex = 0;

设置开始场景死循环

// 因为在开始场景要不停的进行输入,输入ws进行选项的更换
// 所以我们可以构造一个开始界面自己的死循环,专门用来处理开始场景相关的逻辑
while (true)
{
}

开始场景死循环内,声明一个是否退出开始场景死循环的标识

// 处理在开始场景死循环内的检测输入内容进行条件分支的switch逻辑执行时
// 假如希望退出开始场景死循环,改变标识,末尾处补上对应判断语句即可
bool isQuitBeginWhile = false;

开始场景死循环内,设置显示两个选项的内容

// 先设置光标位置,再输入显示对应选项的文本内容
Console.SetCursorPosition(w / 2 - 4, 13);
// 根据当前选择的编号来决定当前的选项是否应该变色是否变色
Console.ForegroundColor = nowSelIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;
Console.Write("开始游戏");

// 先设置光标位置,再输入显示对应选项的文本内容
Console.SetCursorPosition(w / 2 - 4, 15);
// 根据当前选择的编号来决定当前的选项是否应该变色是否变色
Console.ForegroundColor = nowSelIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;
Console.Write("退出游戏");

开始场景死循环内,检测玩家输入

// 检测玩家输入的一个键内容,并且设置不会再控制台上显示输入的内容
char input = Console.ReadKey(true).KeyChar;

开始场景死循环内,获得玩家输入的值,根据输入的值进行条件分支,执行对应的逻辑

// W让选项往上,S让选项往下,J确认进入当前选项
switch (input)
{
    case 'W':
    case 'w':
        // 选项的编号减小,进行边界判断
        --nowSelIndex;
        if (nowSelIndex < 0)
        {
            nowSelIndex = 0;
        }
        break;
    case 'S':
    case 's':
        // 选项的编号增大,进行边界判断
        ++nowSelIndex;
        if (nowSelIndex > 1)
        {
            nowSelIndex = 1;
        }
        break;
    case 'J':
    case 'j':
        // 根据当前的选项编号执行不同逻辑
        if (nowSelIndex == 0)
        {
            // 改变当前选择的场景ID,改为2游戏场景
            // 退出开始场景死循环后,重新进入游戏主逻辑死循环时会进入到游戏场景的分支选项
            nowSceneID = 2;

            // 进入游戏场景要退出开始场景,更改开始场景死循环的标识
            isQuitBeginWhile = true;
        }
        else
        {
            // 关闭控制台,退出游戏
            Environment.Exit(0);
        }
        break;
}

开始场景死循环内,根据是否要退出开始场景死循环标识,判断是否要退出开始场景死循环

if (isQuitBeginWhile)
{
    break;
}

7.2 知识点代码

#region 3 开始场景逻辑

//设置开始场景标题
Console.SetCursorPosition(w / 2 - 7, 8);
Console.Write("韬老狮营救公主");

//设置当前选项的编号变量 并进行初始化
//0是开始游戏 1是退出游戏
int nowSelIndex = 0;

//设置开始场景死循环
//因为在开始场景要不停的进行输入 输入ws进行选项的更换
//所以我们可以构造一个 开始界面自己的 死循环
//专门用来处理 开始场景相关的逻辑
while (true)
{
    //开始场景死循环内 声明一个是否退出开始场景死循环的标识

    //处理在开始场景死循环内的检测输入内容进行条件分支的switch逻辑执行时
    //假如希望退出开始场景死循环 改变标识 末尾处补上对应判断语句即可
    bool isQuitBeginWhile = false;

    //开始场景死循环内 设置显示两个选项的内容

    //先设置光标位置 再输入显示对应选项的文本内容
    Console.SetCursorPosition(w / 2 - 4, 13);
    //根据当前选择的编号来决定当前的选项是否应该变色是否变色
    Console.ForegroundColor = nowSelIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("开始游戏");

    //先设置光标位置 再输入显示对应选项的文本内容
    Console.SetCursorPosition(w / 2 - 4, 15);
    //根据当前选择的编号来决定当前的选项是否应该变色是否变色
    Console.ForegroundColor = nowSelIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("退出游戏");

    //开始场景死循环内 检测玩家输入

    //检测玩家输入的一个键内容 并且设置不会再控制台上显示输入的内容
    char input = Console.ReadKey(true).KeyChar;

    //开始场景死循环内 获得玩家输入的值 根据输入的值进行条件分支 执行对应的逻辑
    //W让选项往上 S让选项往下 J确认进入当前选项
    switch (input)
    {
        case 'W':
        case 'w':
            //选项的编号减小 进行边界判断
            --nowSelIndex;
            if (nowSelIndex < 0)
            {
                nowSelIndex = 0;
            }
            break;
        case 'S':
        case 's':
            //选项的编号增大 进行边界判断
            ++nowSelIndex;
            if (nowSelIndex > 1)
            {
                nowSelIndex = 1;
            }
            break;
        case 'J':
        case 'j':
            //根据当前的选项编号执行不同逻辑
            if (nowSelIndex == 0)
            {
                //改变当前选择的场景ID 改为2游戏场景
                //退出开始场景死循环后 重新进入游戏主逻辑死循环时会进入到游戏场景的分支选项
                nowSceneID = 2;

                //进入游戏场景要退出开始场景 更改开始场景死循环的标识
                isQuitBeginWhile = true;
            }
            else
            {
                //关闭控制台 退出游戏
                Environment.Exit(0);
            }
            break;
    }

    //开始场景死循环内 根据是否要退出开始场景死循环标识 判断是否要退出开始场景死循环 
    if (isQuitBeginWhile)
    {
        break;
    }
}
#endregion


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

×

喜欢就点赞,疼爱就打赏