在C中生成Ascii艺术文本

uts*_*iem 5 c ascii-art

我正在尝试为一个有趣的应用程序生成ascii艺术文本.从FIGLET,我得到了ASCII模式.我在printf声明中使用该模式来打印字母.这是我从FIGLET获得的模式的截图:

FIGLET

这是我用来打印A的代码片段:

printf("      _/_/\n   _/    _/\n  _/_/_/_/\n _/    _/\n_/    _/\n");
Run Code Online (Sandbox Code Playgroud)

现在,我从用户处获取输入文本,并以ASCII艺术显示它.当我使用printf时,我只能垂直生成它:

垂直图像

但我需要做横向ASCII艺术.怎么做 ?

Jac*_*erk 3

是的,这是一个众所周知的问题。我上次解决这个问题的方法是为每行使用一个数组并单独渲染每个字母。

首先,我将代表数组中的每个字母。例如你的 A 会是这样的:

char* letter[8]; 
letter[0] = "      _/_/ ";
letter[1] = "   _/    _/";
etc.
Run Code Online (Sandbox Code Playgroud)

(实际上,将使用二维数组,其中每个字母位于不同的索引处。)

实际的渲染也将在一个数组中,类似于:

字符*渲染[8];

然后使用串联来构建每一行。一个简单的嵌套 for 循环应该可以解决问题:

for each line, i to render (i.e the height of the letters)
    for each letter, j
       concatenate line i of letter j to the to char* i in the array
Run Code Online (Sandbox Code Playgroud)

最后循环数组并打印每一行。实际上,您可以跳过渲染数组并简单地打印每一行而不用回车符。我想到了类似以下的事情:

for each line, i to render : // (i.e the height of the letters) 
    for each letter, j {
       output line i of letter j
    }
    output a carriage return
}
Run Code Online (Sandbox Code Playgroud)

(我的C有点生疏,从那里开始的“伪”代码。但是,我认为我的逻辑是合理的。)