C#入门-控制台

一:常用代码

输出(光标空行):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);//在调试模式下,不会自动关闭

设置控制台大小:
  1. 设置窗口大小:Console.SetWindowSize(100, 50);

  2. 设置缓冲区大小:Console.SetBufferSize(1000, 1000);

  3. 得到缓冲区的大小:Console.BufferHeight Console.BufferHeight

注意:窗口大小和缓冲区大小

  1. 先设置窗口大小,再设置缓冲区大小

  2. 缓冲区的大小不能小于窗口的大小

  3. 窗口的大小不能大于控制台的最大尺寸

  4. 缓冲区大小 (可打印内容区域的宽高 )

设置光标的位置:

控制台左上角为原点0,0 。右侧是X轴正方向,下方是Y轴正方向,它是一个平面二维坐标系。

  1. 设置位置:Console.SetCursorPosition(10, 5);

  2. 输出:Console.WriteLine("123123");

以上为一个组合,每一次不同位置的输入,都需要先设置位置→输出文字

注意:

  1. 控制台的横纵距离单位不同 -> 1y = 2x    (视觉上的)
设置颜色相关:

文字颜色

  1. Console.ForegroundColor = ConsoleColor.Red;

  2. Console.WriteLine("123123123");

  3. Console.ForegroundColor = ConsoleColor.Green;

背景颜色

  1. Console.BackgroundColor = ConsoleColor.White;

  2. 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;
                }
            }
        }
    }

注意:

  1. 不显示玩家输入的内容:char c = Console.ReadKey(true).KeyChar;
  2. 隐藏光标:Console.CursorVisible = false;
  3. 中文字符在控制台上占2个位置
  4. 控制台的横纵比例:y:x=2:1   【方块纵向横向移动的步幅大小;越界的判断】
  5. 边界问题:光标不能到画幅外面。左,上考虑坐标的位置即可。右越界问题需要考虑缓冲区的大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值