一:常用代码
输出(光标空行):Console.WriteLine("123123");
输出(光标不空行):Console.Write("123123123123");
输入:string str = Console.ReadLine();
以回车为结束信号
检测按下任意键:Console.ReadKey();
程序会在此行停止
光标不显示在控制台:char c = Console.ReadKey(true).KeyChar; 关键点:ReadKey(true)
参数true表示不会把输入的内容显示在控制台
清空:Console.Clear();
光标显隐:Console.CursorVisible = false;
关闭控制台:Environment.Exit(0);
//在调试模式下,不会自动关闭
设置控制台大小:
-
设置窗口大小:
Console.SetWindowSize(100, 50);
-
设置缓冲区大小:
Console.SetBufferSize(1000, 1000);
-
得到缓冲区的大小:
Console.BufferHeight
Console.BufferHeight
注意:窗口大小和缓冲区大小
先设置窗口大小,再设置缓冲区大小
缓冲区的大小不能小于窗口的大小
窗口的大小不能大于控制台的最大尺寸
缓冲区大小 (可打印内容区域的宽高 )
设置光标的位置:
控制台左上角为原点0,0 。右侧是X轴正方向,下方是Y轴正方向,它是一个平面二维坐标系。
-
设置位置:
Console.SetCursorPosition(10, 5);
-
输出:
Console.WriteLine("123123");
以上为一个组合,每一次不同位置的输入,都需要先设置位置→输出文字
注意:
- 控制台的横纵距离单位不同 -> 1y = 2x (视觉上的)
设置颜色相关:
文字颜色
-
Console.ForegroundColor = ConsoleColor.Red;
-
Console.WriteLine("123123123");
-
Console.ForegroundColor = ConsoleColor.Green;
背景颜色
-
Console.BackgroundColor = ConsoleColor.White;
-
Console.Clear();
注意:重置背景颜色过后 需要Clear一次 才能把整个背景颜色改变
二:实例-通过WASD键在控制台中控制一个黄色方块上下左右移动
class Program
{
static void Main(string[] args)
{
//改背景颜色
Console.BackgroundColor = ConsoleColor.Red;
Console.Clear();
//改变字体颜色
Console.ForegroundColor = ConsoleColor.Yellow;
//隐藏光标
Console.CursorVisible = false;
//黄色方块感觉像人一样 这个人身上有位置信息
int x = 0;
int y = 0;
//输入 wasd键 控制移动
while (true)
{
Console.SetCursorPosition(x, y);
Console.Write("■");
//得到玩家的输入信息
char c = Console.ReadKey(true).KeyChar;
//擦除上一个方块
Console.SetCursorPosition(x, y);
Console.Write(" ");
switch (c)
{
//贯穿
case 'W':
case 'w':
y -= 1;
//改变位置过后 判断新位置 是否越界
if( y < 0 )
{
y = 0;
}
break;
case 'A':
case 'a':
//中文符号 在控制台上占2个位置
x -= 2;
if( x < 0 )
{
x = 0;
}
break;
case 'S':
case 's':
y += 1;
if( y > Console.BufferHeight - 1 )//需考虑光标的位置
{
y = Console.BufferHeight - 1;
}
break;
case 'D':
case 'd':
x += 2;
if( x > Console.BufferWidth - 2 )
{
x = Console.BufferWidth - 2;
}
break;
}
}
}
}
注意:
- 不显示玩家输入的内容:char c = Console.ReadKey(true).KeyChar;
- 隐藏光标:Console.CursorVisible = false;
- 中文字符在控制台上占2个位置
- 控制台的横纵比例:y:x=2:1 【方块纵向横向移动的步幅大小;越界的判断】
- 边界问题:光标不能到画幅外面。左,上考虑坐标的位置即可。右越界问题需要考虑缓冲区的大小