画板改进来啦
  • 板块灌水区
  • 楼主吴明事
  • 当前回复8
  • 已保存回复8
  • 发布时间2021/11/28 09:09
  • 上次更新2023/11/3 23:24:23
查看原帖
画板改进来啦
378914
吴明事楼主2021/11/28 09:09

昨天的帖子里许多人提了意见,于是这次增加了两个东西,橡皮擦和注释。橡皮擦按0,记得擦完后换回去!

#include<windows.h>
#include<iostream>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)//将复杂的检测定义为简单的KEY_DOWN 
void gotoxy(int x,int y) {
    COORD pos={x,y};//将坐标封存进变量里 
    HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台(本控制台) 
    SetConsoleCursorPosition(hOut,pos);//设置光标坐标 
}
void hide(){
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);//获取控制台(本控制台) 
	CONSOLE_CURSOR_INFO CursorInfo;//设置变量存储控制台光标信息 
	GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
	CursorInfo.bVisible = false; //隐藏控制台光标
	SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
}
using namespace std;
int main() {
	hide();
	system("mode con cols=1000 lines=1000");//设置画板(控制台)大小 
	POINT p;
	int x,y;
	string s="●";
	for(;;){
		CONSOLE_FONT_INFO a;
		GetCursorPos(&p);//获取鼠标绝对坐标 
		ScreenToClient(GetForegroundWindow(),&p);
		GetCurrentConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),FALSE,&a);
		x=p.x/a.dwFontSize.X;//计算鼠标相对坐标 
		y=p.y/a.dwFontSize.Y;
		if(KEY_DOWN(' ')){
			if(x%2==1)x--;//因为画笔是双字符,重叠会出现bug 
			gotoxy(x,y);
			cout<<s;
		}
		else if(KEY_DOWN('1'))s="●";
		else if(KEY_DOWN('2'))s="■";
		else if(KEY_DOWN('3'))s=". ";
		else if(KEY_DOWN('0'))s="  ";
		else if(KEY_DOWN('S'))system("cls");//清屏 
    	else if(KEY_DOWN('R'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);//红 
    	else if(KEY_DOWN('B'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);//蓝
    	else if(KEY_DOWN('G'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);//绿 
    	else if(KEY_DOWN('P'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);//红+蓝=紫 
    	else if(KEY_DOWN('Y'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);//红+绿=黄 
    	else if(KEY_DOWN('C'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);//蓝+绿=青 
    	else if(KEY_DOWN('W'))SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN);//红+蓝+绿=白 
	}
}

封装的exe

查了一下,此链接时效一天,如果过期后还有需要的,跟我说。记得@或私信

2021/11/28 09:09
加载中...