Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: PDcurses ja värit

Jyri [03.01.2005 19:26:05]

#

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?

ZcMander [03.01.2005 19:41:03]

#

https://www.ohjelmointiputka.net/keskustelu/7162-ncurses-ja-värit

Aruviel [03.01.2005 19:45:57]

#

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.
*/

Jyri [03.01.2005 19:57:40]

#

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");
}

???

Aruviel [03.01.2005 20:21:25]

#

Jos terminaali tukee sitä (can_change_color palauttaa truen), niin kyllä.

Jyri [03.01.2005 20:40:03]

#

Ok pitää viel tehä noi change jutut.. olin vähä unohtanu :D kiitti jo etukäteen!

Aruviel [03.01.2005 20:42:34]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta