自动连点器

namespace gongjv {
	inline void cd(int x) {
		Sleep(x);
		system("cls");
	}
	void ggb() {
		HWND hwnd = GetConsoleWindow();
		LONG style = GetWindowLong(hwnd, GWL_STYLE);
		style &= ~(WS_MINIMIZEBOX | WS_MAXIMIZEBOX  | WS_THICKFRAME);
		SetWindowLong(hwnd, GWL_STYLE, style);
		SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
		             SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
	}
	bool SetWindowTopMost(HWND hWnd, bool topmost, bool noActivate = true) {
		if (!IsWindow(hWnd)) return false;
		UINT flags = SWP_NOMOVE | SWP_NOSIZE;
		if (noActivate) flags |= SWP_NOACTIVATE; // 关键:置顶但不抢焦点
		return SetWindowPos(hWnd,
		                    topmost ? HWND_TOPMOST : HWND_NOTOPMOST,
		                    0, 0, 0, 0,
		                    flags);
	}
	bool axj(long long key) {
		return (GetKeyState(key) < 0) ? (true) : (false);
	}
	struct hl {
		long long h,l;
	};
	inline void de(int x) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
	}
	int djde1(int x) {
		int y=0;
		switch(x) {
			case 1:
				y=7;
				break;
			case 2:
				y=15;
				break;
			case 3:
				y=2;
				break;
			case 4:
				y=10;
				break;
			case 5:
				y=3;
				break;
			case 6:
				y=11;
				break;
			case 7:
				y=9;
				break;
			case 8:
				y=14;
				break;
			case 9:
				y=12;
				break;
		}
		return y;
	}
	void pzde2(int x) {
		int y=0;
		switch(x) {
			case 1:
				y=15;
				break;
			case 2:
				y=10;
				break;
			case 3:
				y=11;
				break;
			case 4:
				y=14;
				break;
			case 5:
				y=4;
				break;
		}
		de(y);
	}
	int pzde1(int x) {
		int y=0;
		switch(x) {
			case 1:
				y=15;
				break;
			case 2:
				y=10;
				break;
			case 3:
				y=11;
				break;
			case 4:
				y=14;
				break;
			case 5:
				y=4;
				break;
		}
		return y;
	}
	void djde2(int x) {
		int y=0;
		switch(x) {
			case 1:
				y=7;
				break;
			case 2:
				y=15;
				break;
			case 3:
				y=2;
				break;
			case 4:
				y=10;
				break;
			case 5:
				y=3;
				break;
			case 6:
				y=11;
				break;
			case 7:
				y=9;
				break;
			case 8:
				y=14;
				break;
			case 9:
				y=12;
				break;
		}
		de(y);
	}
	bool ax(long long key) {
		return (GetKeyState(key) < 0) ? (true) : (false);
	}
	hl wz(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;
	}
	hl GetActiveWindowSize() {
		HWND hwnd = GetForegroundWindow();
		RECT rect;
		if (GetClientRect(hwnd, &rect)) {
			int clientWidth = rect.right - rect.left;
			int clientHeight = rect.bottom - rect.top;
			hl sas= {clientWidth /8,clientHeight /16};
			return sas;
		}
	}
	void ycbj() {
		HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
		DWORD mode;
		GetConsoleMode(hStdin, &mode);
		mode &= ~ENABLE_QUICK_EDIT_MODE;
		SetConsoleMode(hStdin, mode);
		return;
	}
	void ycgb() {
		CONSOLE_CURSOR_INFO cursor;
		cursor.bVisible = FALSE;
		cursor.dwSize = sizeof(cursor);
		HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
		SetConsoleCursorInfo(handle, &cursor);
		return;
	}
	inline void ydgb(long long h, long long l) {
		h-=1;
		l-=1;
		COORD pos = { (short)l,(short)h  };
		HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
		SetConsoleCursorPosition(hOut, pos);
		return;
	}
	inline void ydgb_zj_sc(int x,string zt) {
		ll s1=GetActiveWindowSize().h/2;
		ll s2=zt.size()/2;
		ydgb(x,s1-s2);
		cout<<zt;
	}
	inline void ydgb_zj(int x,string zt) {
		ll s1=GetActiveWindowSize().h/2;
		ll s2=zt.size()/2;
		ydgb(x,s1-s2);
	}
	inline void ydgb_zj(int x,int zt) {
		ll s1=GetActiveWindowSize().h/2;
		ll s2=zt/2;
		ydgb(x,s1-s2);
	}
	inline hl ydgb_zj_hl(string zt) {
		ll s1=GetActiveWindowSize().h/2;
		ll s2=zt.size()/2;
		hl z= {s1-s2,s1+s2};
		return z;
	}
	inline bool pdbj(int y,int x,int x1,int x2,int ys,string zt) {
		ycgb();
		ycbj();
		hl z=wz(1,1);
		bool a=0;
		if(z.h==y&&z.l>=x1&&z.l<=x2) {
			ydgb(y,x);
			de(ys*16);
			cout<<zt;
			de(ys);
			if(axj(VK_LBUTTON)) {
				a=1;
			}
		} else {
			ydgb(y,x);
			de(ys);
			cout<<zt;
		}
		de(15);
		return a;
	}
	inline bool pddj_zj(int h,int ys,string zt) {
		int s1=GetActiveWindowSize().h/2;
		int s2=zt.size()/2;
		if(pdbj(h,s1-s2,s1-s2,s2+s1,ys,zt)) {
			return 1;
		} else {
			return 0;
		}
	}
	inline bool pddj_zj_kh(int h,int ys,string zt,string z1="",string z2="") {
		int s1=GetActiveWindowSize().h/2;
		int s2=zt.size()/2;
		ydgb(h,s1-s2-z1.size()-1);
		cout<<z1<<"[";
		ydgb(h,s1+s2);
		cout<<"]"<<z2;
		if(pdbj(h,s1-s2,s1-s2,s2+s1,ys,zt)) {
			return 1;
		} else {
			return 0;
		}
	}
	inline bool pddj_kh(int h,int x,int ys,string zt,string z1="",string z2="") {
		int s2=zt.size();
		ydgb(h,x);
		cout<<z1<<"[";
		ydgb(h,x+z1.size()+s2+1);
		cout<<"]"<<z2;
		if(pdbj(h,x+z1.size()+1,x+z1.size()+1,s2+x+z1.size(),ys,zt)) {
			return 1;
		} else {
			return 0;
		}
	}
	inline string wjcc(string x, string y) {
		std::string full_path = x + "\\" + y;
		// 只创建目录,不创建文件
		std::string command = "if not exist " + x + " mkdir " + x;
		int ret = system(command.c_str());
		return full_path;
	}
	inline string in_str(ll x) {
		string y="";
		const string z[]= {"0","1","2","3","4","5","6","7","8","9"};
		while(x) {
			y+=z[x%10];
			x/=10;
		}
		reverse(y.begin(),y.end());
		return y;
	}
};