昨天的帖子里许多人提了意见,于是这次增加了两个东西,橡皮擦和注释。橡皮擦按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);//红+蓝+绿=白
}
}
查了一下,此链接时效一天,如果过期后还有需要的,跟我说。记得@或私信