- gf24240 的博客
《梦溪笔谈·娱乐》卷十一:打字机
- 2025-9-29 18:40:52 @
前言
就是无聊。
有用的解释
灵感来源:大写字母 Y 。
代码功能
你输入一段字符串,程序根据你的输入将其转化为 的由 *
和空格组成的图案。例如:
输入:
BCOI
输出:
**** **** *** ***
* * * * * *
**** * * * *
* * * * * *
**** **** *** ***
工作原理
实际上是根据字模编码的原理,但是是字母 & 削弱版。将 个字母转化为 的点阵(原版是 ),再根据输入得到输出就好了。
但是这些点阵都是竖排的,要得到横板有多种方法,例如将字模存到一个数组里,最后再输出等等。
但是有点麻烦。这里使用一种方便的方法:对于输入的字符串:首先遍历行数 ,再遍历这个字符串,输出这些字符的第 行,每个字符之间有一个空格。
由于大小的限制,所以小写字母可能不太完美。
为了看得震撼一点,我还在每个输出后加了等待(第 行)。你可以修改这个值。这是这个函数的详细解释 DC・system & sleep ,@ 。
额外地,你可以使用 "(cls)"
来清屏。
**** * * * * * * * * *** *** *** **** * * * *** * * * * * * * * * * * * * * ** **** *** *** **** **** ** * *** * *
#include <iostream>
#include <windows.h>
using namespace std;
char alphi[70][10][10] =
{
//空格
{
" ",
" ",
" ",
" ",
" "
},
//A
{
" * ",
" * * ",
" *** ",
"* *",
"* *",
},
//B
{
"**** ",
"* *",
"**** ",
"* *",
"**** ",
},
//C
{
" ****",
"* ",
"* ",
"* ",
" ****",
},
//D
{
"**** ",
"* *",
"* *",
"* *",
"**** ",
},
//E
{
"*****",
"* ",
"**** ",
"* ",
"*****",
},
//F
{
"*****",
"* ",
"**** ",
"* ",
"* ",
},
//G
{
" ****",
"* ",
"* ***",
"* *",
" ****",
},
//H
{
"* *",
"* *",
"*****",
"* *",
"* *",
},
//I
{
" *** ",
" * ",
" * ",
" * ",
" *** ",
},
//J
{
" *** ",
" * ",
" * ",
"* * ",
" * ",
},
//K
{
"* * ",
"* * ",
"** ",
"* * ",
"* * ",
},
//L
{
"* ",
"* ",
"* ",
"* ",
"**** ",
},
//M
{
"* *",
"** **",
"* * *",
"* *",
"* *",
},
//N
{
"* *",
"** *",
"* * *",
"* **",
"* *",
},
//O
{
" *** ",
"* *",
"* *",
"* *",
" *** ",
},
//P
{
"**** ",
"* *",
"**** ",
"* ",
"* ",
},
//Q
{
" *** ",
"* *",
"* * *",
"* * ",
" ** *",
},
//R
{
"**** ",
"* *",
"**** ",
"* * ",
"* *",
},
//S
{
" ****",
"* ",
" *** ",
" *",
"**** ",
},
//T
{
"*****",
" * ",
" * ",
" * ",
" * ",
},
//U
{
"* *",
"* *",
"* *",
"* *",
" *** ",
},
//V
{
"* *",
"* *",
" * * ",
" * * ",
" * ",
},
//W
{
"* *",
"* *",
"* * *",
"** **",
"* *",
},
//X
{
"* *",
" * * ",
" * ",
" * * ",
"* *",
},
//Y
{
"* *",
" * * ",
" * ",
" * ",
" * ",
},
//Z
{
"*****",
" * ",
" * ",
" * ",
"*****",
},
//a
{
" ",
" ",
" *** ",
"* * ",
" ** *",
},
//b
{
"* ",
"* ",
"**** ",
"* *",
"**** ",
},
//c
{
" ",
" ",
" *** ",
"* ",
" *** ",
},
//d
{
" *",
" *",
" ****",
"* *",
" ****",
},
//e
{
" ",
" ",
" *** ",
"* ***",
" *** ",
},
//f
{
" *** ",
" * ",
"**** ",
" * ",
" * ",
},
//g
{
" ",
" *** ",
"* *",
" **",
" *** ",
},
//h
{
"* ",
"* ",
"**** ",
"* *",
"* *",
},
//i
{
" * ",
" ",
" * ",
" * ",
" * ",
},
//j
{
" * ",
" ",
" * ",
"* * ",
" * ",
},
//k
{
"* ",
"* ",
"* * ",
"** ",
"* * ",
},
//l
{
"* ",
"* ",
"* ",
"* ",
"* ",
},
//m
{
" ",
" ",
"** **",
"** **",
"* * *",
},
//n
{
" ",
" ",
"* * ",
"** * ",
"* ** ",
},
//o
{
" ",
" ",
" *** ",
"* *",
" *** ",
},
//p
{
" ",
" ",
"**** ",
"*****",
"* ",
},
//q
{
" ",
" ",
" ****",
"*****",
" *",
},
//r
{
" ",
" ",
"**** ",
"* ",
"* ",
},
//s
{
" ",
" ",
" ****",
" * ",
"**** ",
},
//t
{
" ",
" * ",
" *** ",
" * ",
" ** ",
},
//u
{
" ",
" ",
"* *",
"* *",
" ** *",
},
//v
{
" ",
" ",
"* *",
" * *",
" * ",
},
//w
{
" ",
" ",
"* * *",
"** **",
"* *",
},
//x
{
" ",
" ",
" * * ",
" * ",
" * * ",
},
//y
{
" ",
" ",
" * * ",
" * ",
" ** ",
},
//Z
{
" ",
" ",
"**** ",
" * ",
"**** ",
}
};
int main()
{
string s;
while (cin >> s)
{
if (s == "(cls)")
{
system("cls");
continue;
}
for (int x = 0; x < 5; ++x)
{
for (auto c : s)
{
int i = -1;
if (c >= 'A' && c <= 'Z') i = c - 'A';
else if (c >= 'a' && c <= 'z') i = c - 'a' + 26;
++i;
for (int y = 0; y < 5; ++y)
{
cout << alphi[i][x][y];
Sleep(15);
}
cout << " ";
}
cout << "\n";
}
}
return 0;
}