coutAIO自制头文件

2023年1月26日 | 分类: 【编程】

我们有时候不仅需要系统自带的头文件,也需要自制的头文件,以下是我自制的头文件。

#ifndef coutAIO_H
#define coutAIO_H
#include <iostream>
#include<windows.h>
#include<conio.h>
#include<algorithm>
#include<cmath>
#include<vector>
#include<stdio.h>
#include<iostream>
#include<string>
#include<cstring>
#include<windows.h>
#include<conio.h>
#include<cstdlib>
#include<ctime>
#include<fstream>
#include <iostream>
#include<windows.h>
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
using namespace std;
const long long ESC = 27,
Enter = 13,
Tab = 9,
Shang = 38,
Xia = 40,
Zuo = 37,
You = 39,
Kong = ' ',
z_sb = VK_LBUTTON,
y_sb = VK_RBUTTON,
Shift = VK_SHIFT,
z_Shift = VK_LSHIFT,
y_Shift = VK_RSHIFT,
Ctrl = VK_CONTROL,
z_Ctrl = VK_LCONTROL,
y_Ctrl = VK_RCONTROL,
Alt = VK_MENU,
z_Alt = VK_LMENU,
y_Alt = VK_RMENU,
A = 'A',
B = 'B',
C = 'C',
D = 'D',
E = 'E',
F = 'F',
G = 'G',
H = 'H',
I = 'I',
J = 'J',
K = 'K',
L = 'L',
M = 'M',
N = 'N',
O = 'O',
P = 'P',
Q = 'Q',
R = 'R',
S = 'S',
T = 'T',
U = 'U',
V = 'V',
W = 'W',
X = 'X',
Y = 'Y',
Z = 'Z';
void gotoxy(int y, int x)
{
	COORD  coord;
	coord.X = x;
	coord.Y = y;
	HANDLE a = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(a, coord);
}
long long jdz(long long aca){//绝对值
	long long temp = aca;
	temp *= temp;
	temp /= aca;
	aca = temp;
	return aca;
}
void color(int a)//打印颜色
{
	/*亮白*/    if (a == 0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	/*蓝色*/    if (a == 1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
	/*绿色*/    if (a == 2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	/*紫色*/    if (a == 3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
	/*红色*/    if (a == 4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
	/*黄色*/    if (a == 5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
	/*深蓝色*/    if (a == 6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	/*土黄色or金黄色*/    if (a == 7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN);
	/*灰色接近白*/    if (a == 8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}
void bukakeqingping(){//不卡清屏
	gotoxy(0, 0);
	for (int i = 0; i < 70; i++) {
		cout << "                                                                                                        " << endl;
	}
	gotoxy(0, 0);
}
void xiaofanweiqingping(int a0, int b0, int c, int a1, int b1){//小范围清屏
	gotoxy(a0, b0);
	for (int i = 0; i < 70; i++) {
		cout << "                                                                                                        " << endl;
	}
	gotoxy(a1, b1);
}
template<typename T>
void swap(T &a, T &b, T){//交换二者
	T temp = a;
	a = b;
	b = temp;
}

long long numberaio(string n){//知道一个字符串的长度
	for (int i = 0; i < 100000; i++) {
		if (n[i] == '\0')
		{
			return i;
		}
	}
}

vector<int> mul(vector<int> &A, int b)
{
	vector<int> C;

	int t = 0;
	for (int i = 0; i < A.size() || t; i++)
	{
		if (i < A.size()) t += A[i] * b;
		C.push_back(t % 10);
		t /= 10;
	}

	while (C.size() > 1 && C.back() == 0) C.pop_back();

	return C;
}

void high_quatily(){//高精度乘法
	string a;
	int b;

	cin >> a >> b;

	vector<int> A;
	for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');

	auto C = mul(A, b);

	for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);
}

void coutAIO(string b, int truefalse0 = 1, bool truefalse1 = 1, bool truefalse2 = 0){
	int i = 0, s = 0;
	long long a = numberaio(b);
	while (a != 0){
		s = rand() % 9;
		if (a != 0 && s == 0)
		{
			color(0);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 1)
		{
			color(1);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 2)
		{
			color(2);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 3)
		{
			color(3);
			cout << b[i];
			a--;
			i++;
			if (truefalse0 != false){
				Sleep(20);
			}
		}
		if (a != 0 && s == 4)
		{
			color(4);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 5)
		{
			color(5);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 6)
		{
			color(6);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 7)
		{
			color(7);
			cout << b[i];
			a--;
			i++;
		}
		if (a != 0 && s == 8)
		{
			color(8);
			cout << b[i];
			a--;
			i++;
		}
		if (truefalse0 == 1){
			Sleep(10);
		}
		if (truefalse0 == 2){
			Sleep(20);
		}
		if (truefalse0 == 3){
			Sleep(40);
		}
		if (truefalse0 == 4){
			Sleep(100);
		}
		if (truefalse0 == 5){
			Sleep(300);
		}
		if (truefalse0 == 6){
			Sleep(1000);
		}
		if (truefalse0 == 100){
			Sleep(1);
		}
	}
	if (truefalse1 != false){
		cout << endl;
	}
	if (truefalse2 != false){
		getch();
	}
}
void start(int n)//打印一副华丽的开局
{
	int g = n;
	system("cls");
	Sleep(1000);
	gotoxy(0, 0);
	for (int i = 1; i <= n; i++)
	{
		for (int i = 1; i <= g; i++)
		{
			coutAIO("██┃", 0, 0);
		}
		cout << endl;
	}
	coutAIO("华丽!!", 4);
	Sleep(5000);
	system("cls");
	Sleep(5000);
}

void shuchu(){//打印一个华丽的界面
	gotoxy(0, 0);
	printf("    WELCOME                                                        WELCOME    \n");
	printf("┌──────────────────────────────────────────────────────────────────────────────────────────┐\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│                                                                                          │\n");
	printf("│卍                                                                                      卐│\n");
	printf("│卍卍                                                                                  卐卐│\n");
	printf("│卍卍卍                                                                              卐卐卐│\n");
	printf("│卍卍卍卍                                                                          卐卐卐卐│\n");
	printf("└──────────────────────────────────────────────────────────────────────────────────────────┘\n");
}

void tiku()
{
	color(6);
	gotoxy(20, 40);
	coutAIO("    题    库    ", 3);
	gotoxy(21, 40);
	coutAIO("    ti    ku   ", 3);
	getch();
	gotoxy(26, 38);
	cout << "imX2G出品,必是精品!\n";
	Sleep(2000);
	color(2);
	bukakeqingping();
	cout << "\t\t\t\t\t\tv.1.1.3";
	shuchu();
	gotoxy(2, 2);
	coutAIO("请输入总问题序号:");
	gotoxy(2, 20);
	int zongwenti = 0, fenwenti = 0;
	cin >> zongwenti;
	bukakeqingping();
	shuchu();
	int a, b, c;
	double a0, b0, c0;
	int ans;
	switch (zongwenti){
	case 0:
		gotoxy(2, 2);
		coutAIO("您选择的是植树问题题型");
		getch();
		bukakeqingping();
		shuchu();
		gotoxy(2, 2);
		coutAIO("请输入分问题序号:");
		gotoxy(2, 20);
		cin >> fenwenti;
		bukakeqingping();
		shuchu();
		switch (fenwenti){
		case 0:
			gotoxy(2, 2);
			coutAIO("小区花园是一个长a米、宽b米的长方形。现在要在花园四周栽树,");
			gotoxy(3, 2);
			coutAIO("四个角上都要栽,每相邻两棵间隔c米,求要栽多少树。请分别给出a,b,c的值:");
			gotoxy(4, 2);
			cin >> a;
			gotoxy(5, 2);
			cin >> b;
			gotoxy(6, 2);
			cin >> c;
			ans = a;
			gotoxy(7, 2);
			cout << ans;
			break;
		default:
			coutAIO("暂未收录此号的题目");
			break;
		}
		break;
	case 1:
		gotoxy(2, 2);
		coutAIO("您选择的是小数乘除法题型");
		getch();
		bukakeqingping();
		shuchu();
		gotoxy(2, 2);
		coutAIO("请输入分问题序号:");
		gotoxy(2, 20);
		cin >> fenwenti;
		bukakeqingping();
		shuchu();
		switch (fenwenti){
		case 0:
			gotoxy(2, 2);
			coutAIO("给一个长a米,宽b米的长方形上刷油漆,每平方米刷c克油漆,");
			gotoxy(3, 2);
			coutAIO("求要刷多少克油漆。(可以是小数)请分别给出a,b,c的值:");
			gotoxy(4, 2);
			cin >> a0;
			gotoxy(5, 2);
			cin >> b0;
			gotoxy(6, 2);
			cin >> c0;
			ans = a0*b0 / c0;
			gotoxy(7, 2);
			coutAIO("答案是:", 2, 0);
			cout << ans;
			break;
		default:
			coutAIO("暂未收录此号的题目");
			break;
		}
		break;
	default:
		coutAIO("暂未收录此号的题型");
		break;
	}
}
struct hl//行列
{
	long long h, l;
};
hl sbwz(bool x = 1, bool n = 1)//鼠标位置
{
	HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
	HWND h = GetForegroundWindow();
	CONSOLE_FONT_INFO consoleCurrentFont;
	hl hl;
	POINT p;
	if (x)
	{
		GetCursorPos(&p);
		ScreenToClient(h, &p);
	}
	else
	{
		GetCursorPos(&p);
	}
	if (n)
	{
		GetCurrentConsoleFont(hOutput, FALSE, &consoleCurrentFont);
		p.x /= consoleCurrentFont.dwFontSize.X;
		p.y /= consoleCurrentFont.dwFontSize.Y;
	}
	hl.h = p.y + 1;
	hl.l = p.x + 1;
	return hl;
}
void full_screen()
{
	HWND hwnd = GetForegroundWindow();
	int cx = GetSystemMetrics(SM_CXSCREEN);            /* 屏幕宽度 像素 */
	int cy = GetSystemMetrics(SM_CYSCREEN);            /* 屏幕高度 像素 */

	LONG l_WinStyle = GetWindowLong(hwnd, GWL_STYLE);   /* 获取窗口信息 */
	/* 设置窗口信息 最大化 取消标题栏及边框 */
	SetWindowLong(hwnd, GWL_STYLE, (l_WinStyle | WS_MAXIMIZE | WS_POPUP) & ~WS_CAPTION & ~WS_THICKFRAME & ~WS_BORDER);//  
	SetWindowPos(hwnd, HWND_TOP, 0, 0, cx, cy, 0);
}
#endif