ChihHuCheYeh's Blog

控制台实现自定义绘图

2018/04/18 Share

运行效果
Windows的cmd窗口多半是以密密麻麻的文字和漆黑冷酷的背景为主,接下来这个程序要搞些不一样的东西,使用控制台画出一些有趣的图案。

思路

一般来说,控制台的输出有两个方向,横向与纵向,也就是说,图形只能够平行逐行或逐列输出,当然,在程序里直接绘制图形是困难和不现实的,更别说一些复杂的图案了,那么,就需要一种外部的“介质”,我认为最好的“介质”就是文本文件了。

首先要创造两个标识符,让程序识别出哪里该画图或者着色抑或不该着色,然后将图形数据以文本的形式存储到一个文本中,随后,让程序逐字符遍历,遇到指定标识符,便输出那个标识符所该执行的操作。

实现

首先需要界定标识符,我以 # 和 空格 为标识符,如果遇到空格,便绘图,如果遇到 #,便什么都不做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Graphical
{
public void DrawGraphicsFormFiles(string File, ConsoleColor Color, int Speed = 100)
{
string ReadData = System.IO.File.ReadAllText(File);
for (int i = 0; i < ReadData.Length; i++)
{
Console.ForegroundColor = ConsoleColor.Black;
Thread.Sleep(2);
if (ReadData[i] == '#')
{
Console.BackgroundColor = ConsoleColor.Black;
}
if (ReadData[i] == ' ' && ReadData[i] != '\t')
{
Console.BackgroundColor = Color;
}
Console.Write(ReadData[i]);
}
}
}
class Program
{
static void Main(string[] args)
{
Graphical g = new Graphical();
string Data = @"Game\Text\Draw.txt";
g.DrawGraphicsFormFiles(Data, ConsoleColor.Blue);
}
}

以下是绘制一个长方形的数据文件:

1
2
3
4
5
6
7
8
9
10
11

##########################
# #
# #
# #
# #
# #
# #
# #
##########################

运行后结果如下:
运行效果

绘制一个阶梯:

1
2
3
4
5
6
7
8
9
	

##########################
######## ########
###### ######
#### ####
## ##
##########################

运行后结果如下:
运行效果

绘制一个Lambda标志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
	

##############################
##############################
##############################
##############################
##############################
##############################
##############################
#########    #################
#########     ################
##########    ################
###########   ################
############   ###############
############   ###############
############   ###############
###########     ##############
###########     ##############
###########     ##############
##########   #   #############
##########   #   #############
#########    #   #############
#########   ###   ############
#########   ###   ############
########    ###   ############
########   #####     #########
########   #####     #########
##############################
##############################
##############################
##############################
##############################


运行后结果如下:
运行效果

CATALOG
  1. 1. 思路
  2. 2. 实现