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