#include <iostream>
#include <string>
using namespace std;
/*
ANSI escape kódok C++ konzolhoz
--------------------------------------------
- Modern terminálokon működik (Linux, Mac, Windows 10/11+)
- Alap: "\033[" + kód + "m" (ESC karakter: \033 vagy \x1B)
- Több kód pontvesszővel elválasztva
- Kiírás után mindig reset: "\033[0m"
--------------------------------------------
Főbb színkódok:
30: fekete 31: piros 32: zöld 33: sárga
34: kék 35: lila 36: cián 37: fehér
Háttérszínek: 40-47 (ugyanazok a színek)
Egyéb: 1: félkövér (vastag), 4: aláhúzott, 7: inverz
*/
// Szín makrók
#define ALAP "\033[0m"
#define FELKOVER "\033[1m"
#define ALAHUZOTT "\033[4m"
#define INVERTALT "\033[7m"
// Előtér színek
#define FEKETE "\033[30m"
#define PIROS "\033[31m"
#define ZOLD "\033[32m"
#define SARGA "\033[33m"
#define KEK "\033[34m"
#define LILA "\033[35m"
#define CIAN "\033[36m"
#define FEHER "\033[37m"
// Háttér színek
#define H_FEKETE "\033[40m"
#define H_PIROS "\033[41m"
#define H_ZOLD "\033[42m"
#define H_SARGA "\033[43m"
#define H_KEK "\033[44m"
#define H_LILA "\033[45m"
#define H_CIAN "\033[46m"
#define H_FEHER "\033[47m"
int main() {
setlocale(LC_ALL, "");
cout << FELKOVER << CIAN << "ANSI escape kódok - színezés és formázás C++-ban" << ALAP << "\n\n";
cout << "Alapszínek (előtér):" << endl;
cout << FEKETE << "fekete " << ALAP;
cout << PIROS << "piros " << ALAP;
cout << ZOLD << "zöld " << ALAP;
cout << SARGA << "sárga " << ALAP;
cout << KEK << "kék " << ALAP;
cout << LILA << "lila " << ALAP;
cout << CIAN << "cián " << ALAP;
cout << FEHER << "fehér " << ALAP << endl << endl;
cout << "Háttérszínek:" << endl;
cout << H_FEKETE << FEHER << " fekete háttér " << ALAP;
cout << H_PIROS << FEHER << " piros háttér " << ALAP;
cout << H_ZOLD << FEKETE << " zöld háttér " << ALAP;
cout << H_SARGA << FEKETE << " sárga háttér " << ALAP;
cout << H_KEK << FEHER << " kék háttér " << ALAP;
cout << H_LILA << FEHER << " lila háttér " << ALAP;
cout << H_CIAN << FEKETE << " cián háttér " << ALAP;
cout << H_FEHER << FEKETE << " fehér háttér " << ALAP << endl << endl;
cout << "Szövegstílusok:" << endl;
cout << FELKOVER << "Félkövér (vastag)" << ALAP << endl;
cout << ALAHUZOTT << "Aláhúzott" << ALAP << endl;
cout << INVERTALT << "Inverz (színek felcserélve)" << ALAP << endl << endl;
// Változók színes kiírása magyar változónevekkel
int egesz_szam = 42;
double valos_szam = 3.14;
cout << FELKOVER << SARGA << "Változónév: " << ALAP << CIAN << "egesz_szam" << ALAP
<< " = " << ZOLD << egesz_szam << ALAP << endl;
cout << FELKOVER << SARGA << "Változónév: " << ALAP << LILA << "valos_szam" << ALAP
<< " = " << KEK << valos_szam << ALAP << endl << endl;
// Blokkos kiemelés: figyelmeztetés
cout << H_SARGA << FEKETE << " Figyelem! Ez egy kiemelt üzenet! " << ALAP << endl << endl;
// Aláhúzott, színes szöveg
cout << ALAHUZOTT << PIROS << "Aláhúzott, piros szöveg!" << ALAP << endl;
// Keretes blokk, nagyobb felirattal
cout << H_KEK << FEHER << " "
<< FELKOVER << "KONZOL SZÍNEZÉS" << ALAP << H_KEK << FEHER << " " << ALAP << endl;
cout << endl << "Minden formázás visszaállítva." << endl;
// Sorkizárt, színes kiíratás a te stílusodban
cout << FELKOVER << ZOLD << "valos_szam: " << ALAP << KEK << valos_szam
<< ALAP << " " << FELKOVER << SARGA << "egesz_szam: "
<< ALAP << LILA << egesz_szam << ALAP << endl;
return 0;
}