#include <iostream>
#include <windows.h>
using namespace std;
const int CENTER_PADDING = 5;
void gotoxy(int x, int y, HANDLE outputDeviceHandle);
void printWordOnConsole(HANDLE outputDeviceHandle, int x, int y, char* word);
void main()
{
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(consoleHandle, &csbi);
int consoleColumns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
int consoleRows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
int middleColumn = consoleColumns / 2;
for (int i = 0, j = consoleRows - 1; j >= 0; i++, j--)
{
printWordOnConsole(consoleHandle, middleColumn - CENTER_PADDING, j, "UP");
printWordOnConsole(consoleHandle, middleColumn + CENTER_PADDING, i, "DOWN");
Sleep(1000);
system("cls");
}
}
void printWordOnConsole(HANDLE outputDeviceHandle, int x, int y, char* word)
{
gotoxy(x, y, outputDeviceHandle);
cout << word;
}
void gotoxy(int x, int y, HANDLE outputDeviceHandle)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(outputDeviceHandle, coord);
}
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
const int CENTER_PADDING = 5;
void gotoxy(int x, int y, HANDLE outputDeviceHandle);
void printWordOnConsole(HANDLE outputDeviceHandle, int x, int y, char* word);
void deleteWordFromConsole(HANDLE outputDeviceHandle, int x, int y, int length);
DWORD WINAPI upAndDownPrintingLoop(LPVOID continuePrinting);
void main()
{
cout << "Press [Enter] key to stop printing...";
bool keepPrinting = true;
HANDLE hThread = CreateThread(NULL, 0, upAndDownPrintingLoop, &keepPrinting, 0, NULL);
while (getch() != 13)
{
}
keepPrinting = false;
CloseHandle(hThread);
}
DWORD WINAPI upAndDownPrintingLoop(LPVOID continuePrinting)
{
bool* keepPrinting = (bool*)continuePrinting;
HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(consoleHandle, &csbi);
int consoleColumns = csbi.srWindow.Right - csbi.srWindow.Left + 1;
int consoleRows = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
int middleColumn = consoleColumns / 2;
while (*keepPrinting)
{
for (int i = 0, j = consoleRows - 1; j >= 0 && *keepPrinting; i++, j--)
{
printWordOnConsole(consoleHandle, middleColumn - CENTER_PADDING, j, "UP");
printWordOnConsole(consoleHandle, middleColumn + CENTER_PADDING, i, "DOWN");
Sleep(700);
deleteWordFromConsole(consoleHandle, middleColumn - CENTER_PADDING, j, 2);
deleteWordFromConsole(consoleHandle, middleColumn + CENTER_PADDING, i, 4);
}
}
return 0;
}
void printWordOnConsole(HANDLE outputDeviceHandle, int x, int y, char* word)
{
gotoxy(x, y, outputDeviceHandle);
cout << word;
}
void deleteWordFromConsole(HANDLE outputDeviceHandle, int x, int y, int length)
{
gotoxy(x, y, outputDeviceHandle);
cout << string(length, ' ').c_str();
}
void gotoxy(int x, int y, HANDLE outputDeviceHandle)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(outputDeviceHandle, coord);
}
Comments