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