Eli tarvitsisin erääseen peliini värejä. Kirjastona saisi olla PDcurses. Osaan luoda yksinkertaisen "paletin", mutta tarvitsisin enemmän värejä.
Eli tämähän antaa käyttöön punaisen värin ja musta taustan:
init_pair(3, COLOR_RED,COLOR_BLACK);
mutta jos tarvitsisin vaikka jotain punaisen sävyä, niin miten toimia?
Olen kirjoittanut oppaan tänne putkaan aiheesta. Se tosin käsittelee Ncursesia, ja on kesken. Mutta käynee se myöskin PDCursesin kanssa. Siinä puhutaan juuri tästä.
Väreistä siis:
// Otetaan arvo talteen, joka kertoo, pystyykö // terminaali vaihtamaan väriasetuksia. bool allowColorChange = can_change_color(); // Jos pystyy, vaihdetaan värin nro 1. määritystä. if(allowColorChange == true) { // Tämän jälkeen väriä nro. 1 voidaan muuttaa näin: // Kyseessä on siis RGB-arvo. init_color(1, 66, 22, 33); // Valkoista tekstiä yllä määritellyllä taustavärillä // väripariin numero 6. init_pair(6,COLOR_WHITE,1); } else { // Valkoista mustalla taustalla, väripari nro. 6. init_pair(6,COLOR_WHITE,COLOR_BLACK); } // Väripari otetaan näin käyttöön: attron(COLOR_PAIR(6)); // Ja pois päältä: attroff(COLOR_PAIR(6)); /* * * * * * */ /* init_color(1, 66, 22, 33); Yllä olevalla funktiolla siis asetetaan jollekin värille tietty arvo. Muistaakseni värin numeroon liittyi jokin 'sääntö', mutta yllättäen en muista sitä nyt. RGB-arvot ohjekirjan mukaan täytyvät olla väliltä 0-1000 (NCursesin kanssa). Lisäksi tulee testata, pystyykö konsoli/komentorivi vaihtamaan värejä. En ole vielä kuin yhdellä terminaalilla testannut (gnome-terminal), ja sillä se ei toiminut. */
eli pitäskö taän tulostaa punasella tekstillä '@' merkki:
#include <iostream> #include <stdlib.h> #include <curses.h> using namespace std; int main() { init_color(1, 700, 0, 0); init_color(2, 600, 0, 0); init_pair(3, 1, 2); attron(COLOR_PAIR(3)); mvaddch(0, 0, '@'); attroff(COLOR_PAIR(3)); system("pause"); }
???
Jos terminaali tukee sitä (can_change_color palauttaa truen), niin kyllä.
Ok pitää viel tehä noi change jutut.. olin vähä unohtanu :D kiitti jo etukäteen!
Epäilen tosin josko toimii. Kyllä sen olisi pitänyt jo tuossa edellisessä ohjelmassasi vaihtua.
Perehtyisin tarkemmin asiaan jos jaksaisin. Valitettavasti minua väsyttää jo liikaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.