Как постоянно мигать определенным текстом во время ввода и вывода?

Вот мой код, который мигает «Добро пожаловать» после того, как пользователь вводит свое имя.

«Добро пожаловать» не мигает, когда пользователь пишет свое имя. Когда пользователь нажимает Enter, каретка входит в цикл while. Затем позиция каретки возвращается к координатам «Добро пожаловать» & принты cout ‘Welcome’ с 5 цветами снова & снова, так что кажется, что «Добро пожаловать» мигает.

Но я хочу, чтобы «Добро пожаловать» непрерывно мигало при запуске программы.

Поэтому, скорее всего, этот вопрос также задают — можем ли мы иметь две каретки / курсора одновременно?

#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int main(int argc, char** argv)
{
int x,y,i;char name[10];
textcolor(10);
x=wherex();y=wherey();       //corrdinates of caret will be stored in x & y.
cout<<"\t\t\t\tWelcome\n";
textcolor(15);
cout<<"\nEnter your name\n";
gets(name);
while(1)
{
for(i=10;i<15;i++)
{
textcolor(i);
gotoxy(x,y);          //Transferring caret to the coordinates stored in x & y.
cout<<"\t\t\t\tWelcome";
Sleep(300);
}
}
return 0;
}

1

Решение

Я написал небольшой код для этого вопроса, это не 100% правильный ответ. Я просто отправляю этот ответ только для того, чтобы дать немного идеи новичку.

#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int x,y,b,l,n=0;
char c;
void blink()
{
{
int m;
for(m=10;m<15;m++)
{
textcolor(m);
gotoxy(x,y);
cout<<"\t\t\t\tWelcome";
Sleep(60);
}
}
}
int main(int argc, char** argv)
{
char i;int key_stroke;
textcolor(10);
x=wherex();y=wherey();
cout<<"\t\t\t\tWelcome\n";
textcolor(15);
cout<<"\nEnter your name\n";
l=wherex();b=wherey();
z:
{
while (1)
{
if(!(_kbhit()))
{
blink();
goto z;
}
else
{
i=_getch();
if(i==13)
{
gotoxy(l+n,b+1);
return 0;
}
textcolor(10);
gotoxy(l+n,b);
cout<<i;n=n+1;
}
}
}
return 0;
}
2

Другие решения

Нет, у нас не может быть двух курсоров / курсоров одновременно. Пользователь вводит имя первым.

Он начинает мигать сразу после того, как пользователь нажал клавишу ввода
сначала отображая текст в заданном цвете и времени задержки.
Затем после того, как он устанавливает цвет на черный и переписывает текст черным цветом.

Код Windows:

#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;

void gotoxy(int x, int y);
void setcolor(WORD color);
void clrscr();int main(int argc, char** argv){

int x,y,i;char name[10];

setcolor(10);
cout<<"Welcome\n";

setcolor(15);
cout<<"\nEnter your name  ";
gets(name);

i=0;
x=22;
y=12;

while(1) {

// counter for text color
i++; if (i>15) i=1;

// print colored text
setcolor(i);
gotoxy(x,y);
cout<<"Welcome  "<<name;
Sleep(100);// Print black text to simulate blink
setcolor(0);
gotoxy(x,y);
cout<<"                        ";
Sleep(100);}

setcolor(7);
gotoxy(1,24);
return 0;
}void setcolor(WORD color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
return;
}void gotoxy(int x, int y)
{
COORD coord;
coord.X = x; coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
return;
}void clrscr()
{
COORD coordScreen = { 0, 0 };
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
return;
}
1

Вместо таких кодов вы можете использовать BLINK в функции textcolor (). Единственная проблема в том, что вы не можете контролировать его скорость. вот и все. в противном случае его легко использовать, и вы также можете установить цвет текста.
Например.

цвет текста (красный + моргание);
cprintf («/ t / t WELCOME»);

вот и все. У меня не было времени, чтобы прочитать ваш полный вопрос и программу. Также я просто новичок. Поэтому я надеюсь, что это поможет вам и другим.

0
По вопросам рекламы [email protected]