Opetan 12-vuotiasta C/C++ kielen saloihin.
Eli miten näiden perusjuttujen kanssa vaihdetaan tekstin väriä?
Ei vaihdeta. Jos värejä on kuitenkin ihan pakko saada, voi tutustua Curses-kirjastoon (Linuxille ncurses, Windowsille PDCurses), jolla ohjelmointi on kuitenkin jo aivan toista kuin C++:n standardikirjastolla. Lisäksi löytyy kaikenlaisia ajoympäristöstä riippuvaisia kikkailuja, joiden käyttöä ilman kunnon pohjatietoja en suosittele.
Jos sinulla on kääntäjänä VS voit käyttää CMD:in color parametriparametri komentoa. Mutta se vaihtaa koko ruudun tekstin väriä.
Ainakin Linuxissa pystyy käyttämään terminaaliemulaattorin värejä.
#include <iostream> using namespace std; int main () { cout << "\033[0;32m<foobar>\033[0m <-- vihreää tekstiä" << endl; return 0; }
-tossu-: Kyseessä ei ole "terminaaliemulaattorin värit", vaan ANSI escape sequencet. Tuki niille riippuu täysin terminaalista, jota emuloidaan. En suosittelisi käyttämään suoraan ANSI escape sequenceja ilman niiden tuen tarkistamista terminfolla/termcapilla tai käyttää suoraan cursesia, kun asia on siellä jo toteutettuna. Ei ole mukavaa, kun ohjelma suoltaa terminaalille käsittämätöntä tauhkaa, mistä täytyy greppailla järkevä sisältö.
Windowsissa noilla.
SetConsoleTextAttribute
http://msdn.microsoft.com/en-us/library/ms686047.aspx
SetConsoleCursorPosition
http://msdn.microsoft.com/en-us/library/ms686025.aspx
#include <iostream> #include <stdlib.h> #include <Windows.h> int main(int c, char **v) { HANDLE hKonsoli = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hKonsoli, FOREGROUND_RED|FOREGROUND_INTENSITY); std::cout << "kirkas punanen" << std::endl ; COORD paikka; paikka.X = 10; paikka.Y = 8; SetConsoleCursorPosition(hKonsoli, paikka); std::cout << "Rivi 8, kohta 10" << std::endl ; system("PAUSE"); return 0; }
Ensimmäisestä viestistä sain sellaisen käsityksen, että kyseessä on aivan aloittelija, joka haluaa vain vaihtaa tekstin väriä, eikä niitä ohjelmia ei ole tarkoitus julkaista. Silloin tuo minun esittämäni tapa lienee "oikeaa" tapaa huomattavasti helpompi. Missään julkaistavassa ohjelmassa sitä, tai värejä muutenkaan, tuskin kannattaa käyttää.
-tossu- kirjoitti:
Tuo minun esittämäni tapa lienee "oikeaa" tapaa huomattavasti helpompi.
Niin varmasti on, mutta Windowsissa – jota varsinkin monet aloittelijat käyttävät – se ei tietääkseni toimi.
-tossu- kirjoitti:
Missään julkaistavassa ohjelmassa sitä, tai värejä muutenkaan, tuskin kannattaa käyttää.
Miten niin? Jopa Linuxin perustyökalut (kuten ls) osaavat pyydettäessä käyttää värejä havainnollistamaan tulostetta, eikä tämä ole minusta lainkaan huono asia. Toki värityksen kannattaa olla jollain tavalla tarkoituksenmukaista eikä vain "hienoa ja hauskaa".
Tarkoitin kommentillani juuri turhaa värien käyttöä, jollaista se todennäköisesti aloittelijan ohjelmassa olisi. Joissain paikoissa värit tosiaan ovat perusteltuja (esim. ls josta näkee suoraan ilman -l parametria, onko kyseessä tiedosto vai kansio, onko sillä x-bitti jne.)
Metabolix kirjoitti:
Miten niin? Jopa Linuxin perustyökalut (kuten ls) osaavat pyydettäessä käyttää värejä havainnollistamaan tulostetta, eikä tämä ole minusta lainkaan huono asia.
Värejä sun muita vastaavia toteuttaessa kannattaa aina muistaa tuo /pyydettäessä/. Aina löytyy meitä, joita ls:n tulostama sademetsä häiritsee.
fronty kirjoitti:
Aina löytyy meitä, joita ls:n tulostama sademetsä häiritsee.
Joo, jotkut ihmeelliset ihmiset ei käytä irssissäkään nickcolor.pl:ää.
irssistä otetaankin kaikki ilo irti, jos irkata haluaa yksinkertasella softalla, niin eikö saman tien voi sitten napata irc.
Aihe on jo aika vanha, joten et voi enää vastata siihen.