C#控制台相关并在控制台运行小游戏移动逻辑

一、输出与输入

1.输出:

Console.WriteLine("Hello, World!");//光标空行
Console.Write("Hello, World!");//光标不空行

2.输入:

Console.ReadLine();    //读取输入的文本
Console.ReadKey();    //读取按下的单个键
Console.KeyAvailable;    //用于检查是否有按键操作在输入流中可用.它返回一个布尔值,如果有按键操作可用,则返回true,否则返回false.

注意:如果输入ReadKey(true)不会把输入的内容打印到控制台上:

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

二、控制台其它方法

1.清空:

相当于是擦黑板

Console.Clear();

2.设置控制台的大小:

注意:①先设置窗口大小再设置缓冲区大小。

②缓冲区的大小不能小于窗口的大小。

③窗口的大小不能大于控制台的最大尺寸。

窗口大小:

Console.SetWindowSize(100,50);

缓冲区大小:

Console.SetBufferSize(100,50);

3.设置光标的位置:

 Console.SetCursorPosition(5, 5);
 Console.WriteLine("光标");

注意:①控制台左上角为原点(0,0),右侧是x轴正方向,下方是y轴正方向,它是一个平面二维坐标系。

②要考虑到边界问题。

③横纵比例单位不同,从视觉上来看,y=2x。

4.设置颜色相关

①设置文字颜色:

 Console.ForegroundColor = ConsoleColor.Yellow;
  Console.WriteLine("黄色");

注意:只要打印了一次颜色,之后文字的颜色都会是这个颜色。

②设置背景颜色:

Console.BackgroundColor = ConsoleColor.Green;
 Console.WriteLine("绿色");

注意:设置背景颜色只会把输出内容的背景颜色换成对应颜色,而不是把整个控制台的背景颜色换成对应颜色,如果想要把整个控制台的颜色进行更换,需要对控制台进行清空。

 Console.BackgroundColor = ConsoleColor.Green;
  Console.Clear();

5.光标的隐藏

Console.CursorVisible = false;

6.关闭控制台

Environment.Exit(0);

三、制作小游戏移动逻辑

通过上述介绍控制台相关的内容,并结合我之前发布的关于C#入门语言的文章,要求制作一个小游戏的移动逻辑:通过W、A、S、D在控制台中控制一个黄色方块上下左右移动(注意边界问题)。

internal class Program
{
    const int WIDTH = 40;//设置控制台宽度作为边界
    const int HEIGHT = 20;//设置控制台高度作为边界
    static void Main(string[] args)
    {
        
            Console.CursorVisible = false;//隐藏光标
            Console.SetWindowSize(WIDTH, HEIGHT);//设置窗口大小
            Console.SetBufferSize(WIDTH, HEIGHT);//设置缓冲区大小
            

            int x = 0, y = 0;//方块初始位置
        while (true)
        {
            Console.SetCursorPosition(x,y); // 将光标移动到方块的当前位置
            Console.ForegroundColor = ConsoleColor.Yellow; // 设置方块颜色为黄色
            Console.Write("■");// 在当前位置绘制方块
            char key = Console.ReadKey(true).KeyChar;// 读取用户按下的键(true参数表示不显示按下的键)
            Console.SetCursorPosition(x, y);// 将光标移回方块的原始位置,准备清除方块
            Console.Write("  "); // 用两个空格覆盖原位置的方块,实现清除效果

            // 根据用户按下的键处理方块移动
            switch (key)
            {
                //W或w键:向上移动
                case 'W':
                case 'w':
                    y--;
                    if (y < 0) // 边界检查:防止y坐标小于0(超出上边界)
                    {
                        y = 0;// 如果超出上边界,则保持在边界位置
                    }
                    break;

                    //A或a键:向左移动
                case 'A':
                case 'a':
                    x--;
                    if (x < 0) // 边界检查:防止x坐标小于0(超出左边界)
                    {
                        x = 0; // 如果超出左边界,则保持在边界位置
                    }
                    break;

                    //S或s键:向下移动
                case 'S':
                case 's':
                    y++;
                    if (y > HEIGHT-1) //边界检查:防止y坐标超过最大高度(超出下边界)
                    {
                        y = HEIGHT-1;// 如果超出下边界,则保持在边界位置
                    }
                    break;

                    //D或d键:向右移动
                case 'D':
                case 'd':
                    x++;
                    if (x > WIDTH-2)// 边界检查:防止x坐标超过最大宽度(超出右边界)
                    {
                                    // WIDTH-2是因为方块"■"占2个字符宽度,需要留出空间
                        x = WIDTH-2;// 如果超出右边界,则保持在边界位置
                    }
                    break;

                   // ESC键(ASCII码27):退出程序
                case (char)27:
                    Environment.Exit(0);// 退出应用程序,返回代码0表示正常退出
                    break;

            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值