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