文章目录

效果展示

主函数
static void Main(string[] args)
{
int w = 50;
int h = 30;
ConsoleInit(w, h);
E_SceneType nowSceneType = E_SceneType.Begin;
while (true)
{
switch (nowSceneType)
{
case E_SceneType.Begin:
Console.Clear();
GameEndOrBegin(w, h, ref nowSceneType);
break;
case E_SceneType.Game:
Console.Clear();
GameScene(w, h, ref nowSceneType);
break;
case E_SceneType.End:
Console.Clear();
GameEndOrBegin(w, h, ref nowSceneType);
break;
default:
break;
}
}
}
场景类型枚举
enum E_SceneType
{
Begin,
Game,
End,
}
控制台基础设置
static void ConsoleInit(int w, int h)
{
//控制台设置
Console.CursorVisible = false;
Console.SetWindowSize(w, h);
Console.SetBufferSize(w, h);
}
开始及结束场景逻辑
static void GameEndOrBegin(int w, int h, ref E_SceneType nowSceneType)
{
Console.ForegroundColor = ConsoleColor.White;
Console.SetCursorPosition(nowSceneType == E_SceneType.Begin ? w / 2 - 3 : w / 2 - 4, 8);
Console.Write(nowSceneType == E_SceneType.Begin ? "飞行棋" : "游戏结束");
//当前选项的编号
int count = 0;
bool IsOver = false;
while (true)
{
Console.SetCursorPosition(nowSceneType ==E_SceneType.Begin? w/2-4:w/2-5, 11);
Console.ForegroundColor = count == 0 ? ConsoleColor.Red : ConsoleColor.White;
Console.Write(nowSceneType == E_SceneType.Begin? "游戏开始":"回到主菜单");
Console.SetCursorPosition(w/2-4, 13);
Console.ForegroundColor = count == 1 ? ConsoleColor.Red : ConsoleColor.White;
Console.Write("退出游戏");
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.W:
--count;
if (count < 0)
{
count = 0;
}
break;
case ConsoleKey.S:
++count;
if (count > 1)
{
count = 1;
}
break;
case ConsoleKey.J:
if(c