1.控制台相关方法

1.必备知识点-控制台相关方法


1.1 知识点

复习 输入输出

输出

WriteLine方法 输出空行
Console.WriteLine("123123");
Write方法 输出不空行
Console.Write("123123123123");

输入

ReadLine方法 常规输入
string str = Console.ReadLine();
ReadKey方法 检测键盘输入一个键

检测键盘输入一个键,ReadKey(false)ReadKey() 会把输入的内容显示在控制台上:

char b = Console.ReadKey(false).KeyChar;
Console.WriteLine(b);

如果是 ReadKey(true) 不会把输入的内容显示在控制台上:

char c = Console.ReadKey(true).KeyChar;
Console.WriteLine(c);

控制台其它方法

Clear方法 清空控制台

Console.Clear();

设置控制台大小

设置控制台窗口大小和缓冲区大小时需要注意:

  • 先设置窗口大小,再设置缓冲区大小。
  • 缓冲区的大小不能小于窗口的大小。
  • 窗口的大小不能大于控制台的最大尺寸。
SetWindowSize方法 设置窗口大小
Console.SetWindowSize(100, 49);
SetBufferSize方法 设置缓冲区大小
Console.SetBufferSize(1000, 1000);

设置光标相关

SetCursorPosition方法 设置光标的位置

控制台左上角为原点 (0, 0),右侧是 X 轴正方向,下方是 Y 轴正方向。设置光标的位置时需要注意边界问题和横纵距离单位的不同。

设置光标位置:

Console.SetCursorPosition(10, 5);
Console.WriteLine("123123");
CursorVisible方法 光标显隐
Console.CursorVisible = false;

设置颜色相关

ForegroundColor变量 文字颜色设置
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red");

文字颜色重新设置后会覆盖之前的设置:

Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Green");
BackgroundColor变量 背景颜色设置
Console.BackgroundColor = ConsoleColor.White;
Console.Clear();

重置背景颜色后需要 Clear 一次,才能把整个背景颜色改变,不然只有有字的部分变白色:

Console.Clear();

Environment.Exit(0) 关闭控制台

Environment.Exit(0);

1.2 知识点代码

using System;

namespace 必备知识点_控制台相关方法
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("控制台相关");
            #region 知识点一 复习 输入输出

            //输出
            //光标空行
            Console.WriteLine("123123");
            //不空行
            Console.Write("123123123123");

            //输入
            //常规输入
            string str = Console.ReadLine();

            //检测键盘输入一个键 会把输入的内容显示在控制台上
            char b = Console.ReadKey(false).KeyChar;
            Console.WriteLine(b);
            //如果在ReadKey(true) 不会把输入的内容显示在控制台上
            char c = Console.ReadKey(true).KeyChar;
            Console.WriteLine(c);
            #endregion

            #region 知识点二 控制台其它方法
            //1.清空
            Console.Clear();

            //2.设置控制台大小
            // 可以设置 窗口大小 缓冲区大小

            // 注意:
            //1.先设置窗口大小,再设置缓冲区大小
            //2.缓冲区的大小不能小于窗口的大小
            //3.窗口的大小不能大于控制台的最大尺寸

            //设置窗口大小
            Console.SetWindowSize(100, 49);
            //设置缓冲区大小 (可打印内容区域的宽高,缓冲区的大小不能小于窗口的大小)
            Console.SetBufferSize(1000, 1000);

            //3.设置光标的位置
            //控制台左上角为原点0 0 右侧是X轴正方向 下方是Y轴正方向 它是一个平面二维坐标系
            //注意:
            //1.边界问题
            //2.横纵距离单位不同 1y = 2x 视觉上的
            Console.SetCursorPosition(10, 5);
            Console.WriteLine("123123");

            //4.设置颜色相关
            //文字颜色设置
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Red");
            //文字颜色重新设置后会覆盖之前的设置
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Green");
            //背景颜色设置
            Console.BackgroundColor = ConsoleColor.White;
            //重置背景颜色过后 需要Clear一次 才能把整个背景颜色改变 不然只有有字的部分变白色
            Console.Clear();

            //5.光标显隐
            Console.CursorVisible = false;

            //6.关闭控制台
            Environment.Exit(0);
            #endregion
        }
    }
}

1.3 练习题

控制台中黄色方块上下左右移动

在控制台中,通过W, A, S, D键控制一个黄色方块的上下左右移动。

背景和字体颜色设置

使用Console.BackgroundColorConsole.ForegroundColor改变背景和字体颜色。

Console.BackgroundColor = ConsoleColor.Red;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Yellow;

光标隐藏

通过Console.CursorVisible设置为false,隐藏控制台光标。

Console.CursorVisible = false;

位置信息变量

使用变量xy存储方块的位置信息。

int x = 0;
int y = 0;

死循环

使用while (true)创建一个死循环,监听玩家的输入并移动方块。

while (true)
{
    // 循环体
}

擦除之前的方块

使用Console.SetCursorPositionConsole.Write清除之前的方块。

Console.SetCursorPosition(x, y);
Console.Write("  ");

读取玩家输入

通过Console.ReadKey(true).KeyChar读取玩家输入的字符,并根据输入移动方块。

char input = Console.ReadKey(true).KeyChar;

根据输入移动位置

使用switch语句根据玩家输入移动方块的位置。

switch (input)
{
    // 移动方块的逻辑
}

输出新的方块

根据新的位置信息输出新的方块。

Console.SetCursorPosition(x, y);
Console.Write("■");

请注意,此程序是一个无限循环,需要手动终止。如果想停止程序,可以通过关闭控制台窗口或使用终止进程的方法。


1.4 练习题代码

using System;

namespace 必备知识点_控制台相关方法练习题
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("控制台相关练习题");

            //改背景颜色
            Console.BackgroundColor = ConsoleColor.Red;
            Console.Clear();

            //改变字体颜色
            Console.ForegroundColor = ConsoleColor.Yellow;

            //隐藏光标
            Console.CursorVisible = false;

            //创建位置信息变量 移动时设置位置
            //黄色方块感觉像人一样 这个人身上有位置信息
            // x y
            int x = 0;
            int y = 0;

            //创建死循环 用于不停的输入 wasd键 可以控制它移动
            //根据不停 就分析 用while循环是最简单的一种方式
            while (true)
            {
                //死循环内 要擦掉之前的■ 根据位置重新生成新的■

                //第一种 清空之前信息的方式
                //Console.Clear();//缺点:清空时会有闪烁

                //死循环内 拿到上一轮的位置信息 根据新的位置输出■
                Console.SetCursorPosition(x, y);
                Console.Write("■");

                //死循环内 让玩家输入 得到玩家的输入信息 
                char c = Console.ReadKey(true).KeyChar;//ReadKey(true)隐藏输入的字符


                //第二种 在计算新的位置之前 根据之前位置的位置信息 把之前的方块擦除了
                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;
                        //判断是否大于缓冲区的高 由于字符有长度要减1
                        if (y > Console.BufferHeight - 1)
                        {
                            y = Console.BufferHeight - 1;
                        }
                        break;
                    case 'D':
                    case 'd':
                        x += 2;
                        //判断是否大于缓冲区的关 由于中文符号有长度 在控制台上占2个位置 要减1
                        if (x > Console.BufferWidth - 2)
                        {
                            x = Console.BufferWidth - 2;
                        }
                        break;
                }
            }
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏