乱码生成器
ABCDEFG12345NM · · 科技·工程
肯定会有人说这个乱码生成器华而不实,但我有必要在此申明一下,这只是一个好玩的搞怪代码。
全谷第一个乱码生成器保姆级教程完成,做一个独属于自己的乱码生成器。
〇、前言
现在看到一些乱码生成器。
但……
char c;
for (int i = 0; i < 100; i ++)
{
c = rand () % 100000;
if (c != 7) cout << c;
}
cout << endl;
作者作者这太简陋了吧!?
所以有了这篇文章。
一、基础代码
前置知识
rand 随机数函数 | ASCII 码
1.随机的混沌
随机的字符串源于随机的字符,随机的字符源于随机的数字,随机的数字源于随机的 rand()。
我们只要将随机数取模,得到随机的字符,最后将其输出。
(实现代码)
srand (time (NULL));
while (true) cout << (char)(rand () % 128);
2.参差的每行
显然,前一种方法显示的乱码可谓铺天盖地,美观指数十分糟糕。对于这种情况,我们可以换行解决。
使用双重循环,第一重遍历无数行,第二重遍历每行的随机列,作者个人认为每行取值
(实现代码)
srand (time (NULL));
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++) cout << (char)(rand () % 128);
cout << endl;
}
3.随机换行数
运行之后发现它还是十分紧密,解决的方法就是多换几行。
换的行数值得考虑,作者取的是
(实现代码)
srand (time (NULL));
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++) cout << (char)(rand () % 128);
for (long long i = 1; i <= rand () % 3 + 1; i ++) cout << endl;
}
4.随机空格数
竖向舒展了,但横向照样紧凑。
Dalao:加空格!
没错,再在代码中加入空格的程序。
每行中多加一重循环,每次循环字符与空格出现的几率都为
(实现代码)
srand (time (NULL));
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
int x = rand () % 2;
if (x == 0)
for (long long i = 1; i <= rand () % 100 + 1; i ++) cout << (char)(rand () % 128);
if (x == 1)
for (long long i = 1; i <= rand () % 10 + 1; i ++) cout << ' ';
}
for (long long i = 1; i <= rand () % 3 + 1; i ++) cout << endl;
}
5.另起一类的数字
旧的问题解决了,新的问题随之而来,数字十分稀少,出现的几率仅为
如题,我们可以新建一类,将数字、字符、空格出现的几率都调为
(实现代码)
srand (time (NULL));
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
int x = rand () % 3;
if (x == 0) cout << rand ();
if (x == 1)
for (long long i = 1; i <= rand () % 100 + 1; i ++) cout << (char)(rand () % 128);
if (x == 2)
for (long long i = 1; i <= rand () % 10 + 1; i ++) cout << ' ';
}
for (long long i = 1; i <= rand () % 3 + 1; i ++) cout << endl;
}
到这里基础代码就解决了,想美化的可以看下一部分。
二、美化
前置知识
颜色更改 | 等待时间函数
1.输出美化
单一的黑白根本就不乱,为了让它更乱一点,我们可以加上鬼畜的颜色。
(功能代码)
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), rand () % 16);
但是这又令人眼花缭乱,为了杜绝这种情况,我们可以根据字符对症下药:
(作者所写)
=
使用淡蓝。#
使用绿色。<
、>
使用紫色。\
、'
、"
使用灰色。+
、-
、*
、/
、%
使用湛蓝。!
、~
、|
、&
、?
使用青蓝。:
、;
、[
、]
、{
、}
使用红色。- 数字使用灰色。
- 其它使用白色。
(实现代码)
srand (time (NULL));
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
int x = rand () % 3;
if (x == 0)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
cout << rand ();
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
}
if (x == 1)
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
char s = (char)(rand () % 128);
if (s == '+' || s == '-' || s == '*' || s == '/' || s == '%' || s == '^') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
else if (s == '!' || s == '~' || s == '|' || s == '&' || s == '?') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
else if (s == '=') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
else if (s == ':' || s == ';' || s == '[' || s == ']' || s == '{' || s == '}') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED);
else if (s == '>' || s == '<') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
else if (s == '\\' || s == '\'' || s == '\"') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
else if (s == '#') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY);
else if (s >= '0' && s <= '9') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
cout << s;
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
}
if (x == 2)
for (long long i = 1; i <= rand () % 10 + 1; i ++) cout << " ";
for (long long i = 1; i <= rand () % 3 + 1; i ++) cout << endl;
}
}
2.时间等待
颜色问题解决了,接下来写延迟输出的代码。
这其实 so easy,因为我们可以直接等待随机毫秒。
(功能代码)
Sleep (rand () % 1000);
最后加入至代码中。
(实现代码)
srand (time (NULL));
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
while (true)
{
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
int x = rand () % 3;
if (x == 0)
{
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
cout << rand ();
Sleep (rand () % 3);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
}
if (x == 1)
for (long long i = 1; i <= rand () % 100 + 1; i ++)
{
char s = (char)(rand () % 128);
if (s == '+' || s == '-' || s == '*' || s == '/' || s == '%' || s == '^') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
else if (s == '!' || s == '~' || s == '|' || s == '&' || s == '?') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_BLUE);
else if (s == '=') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
else if (s == ':' || s == ';' || s == '[' || s == ']' || s == '{' || s == '}') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED);
else if (s == '>' || s == '<') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE);
else if (s == '\\' || s == '\'' || s == '\"') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
else if (s == '#') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY);
else if (s >= '0' && s <= '9') SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
cout << s;
Sleep (rand () % 3);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
}
if (x == 2)
{
for (long long i = 1; i <= rand () % 10 + 1; i ++)
{
cout << " ";
Sleep (rand () % 3);
}
}
Sleep (rand () % 10);
}
for (long long i = 1; i <= rand () % 3 + 1; i ++)
{
cout << endl;
Sleep (rand () % 3);
}
}
乱码生成器的教程到这里就结束了,如果觉得还可以,那么请点个赞吧。