13.结束场景

13.结束场景


13.1 知识点

设置结束场景标题

Console.SetCursorPosition(w / 2 - 4, 5);
Console.ForegroundColor = ConsoleColor.White;
Console.Write("GameOver");

游戏游戏主逻辑死循环外,声明结束场景信息字符串变量

// 用于在结束场景显示相应的文字提示内容
string gameOverInfo = "";

在玩家死亡和解救公主成功的逻辑处,设置结束场景信息

// 如果玩家死亡
if (playerHp <= 0)
{
    // 游戏结束,输掉了应该直接显示我们的游戏结束界面
    // 切换场景id
    nowSceneID = 3;
    gameOverInfo = "游戏失败";
    break;
}
// 判断是否在公主身边按J键
else if ((playerX == princessX && playerY == princessY - 1 ||
          playerX == princessX && playerY == princessY + 1 ||
          playerX == princessX - 2 && playerY == princessY ||
          playerX == princessX + 2 && playerY == princessY) && bossHp <= 0)
{
    // 改变场景ID
    nowSceneID = 3;
    gameOverInfo = "游戏通关";

    // 改变跳出成功拯救公主后跳出游戏主逻辑死循环的标识
    // 跳出游戏界面的while循环,回到主循环
    isOver = true;
}

设置结束场景可变内容的显示信息

// 可变内容的显示,根据失败或者成功显示的内容不一样
Console.SetCursorPosition(w / 2 - 4, 7);
Console.ForegroundColor = ConsoleColor.Green;
Console.Write(gameOverInfo);

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

// 0是回到开始界面,1是退出游戏
int nowSelEndIndex = 0;

设置结束场景死循环,逻辑和开始场景死循环逻辑类似

while (true)
{
    // 退出游戏主逻辑死循环标识
    bool isQuitEndWhile = false;

    // 设置结束场景的两个选项
    Console.SetCursorPosition(w / 2 - 6, 9);
    Console.ForegroundColor = nowSelEndIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("回到开始界面");
    Console.SetCursorPosition(w / 2 - 4, 11);
    Console.ForegroundColor = nowSelEndIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("退出游戏");

    // 让玩家进行输入,获得输入的内容
    char input = Console.ReadKey(true).KeyChar;

    // 根据输入内容执行对应的逻辑
    switch (input)
    {
        case 'W':
        case 'w':
            --nowSelEndIndex;
            if (nowSelEndIndex < 0)
            {
                nowSelEndIndex = 0;
            }
            break;
        case 'S':
        case 's':
            ++nowSelEndIndex;
            if (nowSelEndIndex > 1)
            {
                nowSelEndIndex = 1;
            }
            break;
        case 'J':
        case 'j':
            if (nowSelEndIndex == 0)
            {
                nowSceneID = 1;
                isQuitEndWhile = true;
            }
            else
            {
                Environment.Exit(0);
            }
            break;
    }

    // 判断是否跳出游戏主逻辑死循环
    // 为了从switch中跳出上一层的while循环,加的标识
    if (isQuitEndWhile)
    {
        break;
    }
}

13.2 知识点代码

游戏主逻辑死循环外

//游戏游戏主逻辑死循环外 声明结束场景信息字符串变量
//用于在结束场景显示相应的文字提示内容
string gameOverInfo = "";

游戏主逻辑死循环内

#region 9 结束场景逻辑

//设置结束场景标题
Console.SetCursorPosition(w / 2 - 4, 5);
Console.ForegroundColor = ConsoleColor.White;
Console.Write("GameOver");

//设置结束场景可变内容的显示信息
//可变内容的显示 根据失败或者 成功显示的内容不一样
Console.SetCursorPosition(w / 2 - 4, 7);
Console.ForegroundColor = ConsoleColor.Green;
Console.Write(gameOverInfo);

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

//设置结束场景死循环 逻辑和开始场景死循环逻辑类似
while (true)
{
    //退出游戏主逻辑死循环标识
    bool isQuitEndWhile = false;

    //设置结束场景的两个选项
    Console.SetCursorPosition(w / 2 - 6, 9);
    Console.ForegroundColor = nowSelEndIndex == 0 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("回到开始界面");
    Console.SetCursorPosition(w / 2 - 4, 11);
    Console.ForegroundColor = nowSelEndIndex == 1 ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write("退出游戏");

    //让玩家进行输入 获得输入的内容
    char input = Console.ReadKey(true).KeyChar;

    //根据输入内容执行对应的逻辑
    switch (input)
    {
        case 'W':
        case 'w':
            --nowSelEndIndex;
            if (nowSelEndIndex < 0)
            {
                nowSelEndIndex = 0;
            }
            break;
        case 'S':
        case 's':
            ++nowSelEndIndex;
            if (nowSelEndIndex > 1)
            {
                nowSelEndIndex = 1;
            }
            break;
        case 'J':
        case 'j':
            if (nowSelEndIndex == 0)
            {
                nowSceneID = 1;
                isQuitEndWhile = true;
            }
            else
            {
                Environment.Exit(0);
            }
            break;
    }

    //判断是否跳出游戏主逻辑死循环
    //为了 从switch中跳出上一层的 while循环 加的标识
    if (isQuitEndWhile)
    {
        break;
    }
}

#endregion


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

×

喜欢就点赞,疼爱就打赏