[英]How can I write ASCII art for text(using any language)?
我想编写一个程序来为文本“ NUOSPIN”打印以下模式:
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * *
我正在使用Javascript(NodeJS)。 我必须在控制台上输出它。 任何语言的实现对我来说都适用,包括Java,C,JavaScript。 我知道我可以通过使用预构建的npm软件包(例如asciify)来做到这一点,但是我想这样做。 我应该怎么做呢? 我是否必须分别为每个字符的模式编写代码? 然后通过逐个运行每个字符模式的逻辑打印它们?
通常,您在某处有一个大的地图,可以将字符映射到其外观,尤其是对于此类定制字体。 然后,您将遍历输入字符串,在图片中查找字符,将其放入缓冲区中,然后在完成后打印该缓冲区。
您也可以通过以下方式直接进行打印:逐行打印到屏幕上,查找每个字符的第一行,打印,查找每个字符的第二行,等等。
如果您想真正发挥创意,还可以在内存中用特定字体绘制图像,然后在控制台上用星号和空格绘制该图像。
您可以使用位图,然后将点组合为ASCII样式。
function getWord(s) { var ascii = [], font = { N: [7, 5, 5, 5], U: [5, 5, 5, 7], O: [7, 5, 5, 7], S: [7, 4, 7, 7], P: [7, 7, 4, 4], I: [1, 1, 1, 1] }; s.split('').forEach(function (c) { var size =( font[c].reduce(function (r, a) { return r | a; }, 0)).toString(2).length; font[c].forEach(function (a, i) { var temp = a.toString(2).split('').map(function (c) { return +c ? '*' : ' '; }); while (temp.length < size) { temp.unshift(' '); } ascii[i] = ascii[i] || []; ascii[i].push(temp.join('')); }); }); return ascii.map(function (a) { return a.join(' '); }).join('\\n') } document.getElementById('tt').innerHTML = getWord('NUOSPIN');
<pre id="tt"></pre>
每行文本必须写几次。 首先是ASCII艺术字形的上排。
#!/usr/bin/python
import sys
# Each item in `font` is a list of `font_height` strings.
# The glyphs are not limited to asterisks and spaces.
font_height = 7
margin_left = 1
margin_right = 1
font = {
'N': [
"* *",
"* *",
"** *",
"* * *",
"* **",
"* *",
"* *",
],
'U': [
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
" *** ",
],
'O': [
" *** ",
"* *",
"* *",
"* *",
"* *",
"* *",
" *** ",
],
'S': [
" *** ",
"* *",
"* ",
" *** ",
" *",
"* *",
" *** ",
],
'P': [
"**** ",
"* *",
"* *",
"**** ",
"* ",
"* ",
"* ",
],
'I': [
" * ",
" * ",
" * ",
" * ",
" * ",
" * ",
" * ",
],
}
def printline(text):
for row in range(font_height):
for ch in text:
sys.stdout.write(' ' * margin_left)
sys.stdout.write(font[ch][row])
sys.stdout.write(' ' * margin_right)
sys.stdout.write('\n')
printline('NUOSPIN')
给我
sshoskar@oskog97:~$ ./test.py
* * * * *** *** **** * * *
* * * * * * * * * * * * *
** * * * * * * * * * ** *
* * * * * * * *** **** * * * *
* ** * * * * * * * * **
* * * * * * * * * * * *
* * *** *** *** * * * *
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.