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.BackgroundColor
和Console.ForegroundColor
改变背景和字体颜色。
Console.BackgroundColor = ConsoleColor.Red;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Yellow;
光标隐藏
通过Console.CursorVisible
设置为false,隐藏控制台光标。
Console.CursorVisible = false;
位置信息变量
使用变量x
和y
存储方块的位置信息。
int x = 0;
int y = 0;
死循环
使用while (true)
创建一个死循环,监听玩家的输入并移动方块。
while (true)
{
// 循环体
}
擦除之前的方块
使用Console.SetCursorPosition
和Console.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