#define A_POGRUBIONY (1 << 0)
+#define KOLOR_BRAK -1
#define KOLOR_CZARNY 0
#define KOLOR_CZERWONY 1
#define KOLOR_ZIELONY 2
int kolor;
} atrybut;
-atrybut const bombki[] = {
+static atrybut const bombki[] = {
{A_POGRUBIONY, KOLOR_CZERWONY},
{A_POGRUBIONY, KOLOR_NIEBIESKI},
{A_POGRUBIONY, KOLOR_BRAZOWY},
{A_POGRUBIONY, KOLOR_CYJAN},
{A_POGRUBIONY, KOLOR_BIALY},
};
-int const ile_b = sizeof bombki / sizeof *bombki;
+static int const ile_b = sizeof bombki / sizeof *bombki;
-atrybut const choinka = {0, KOLOR_ZIELONY};
-atrybut const podstawa = {0, KOLOR_BRAZOWY};
-atrybut const podpis = {A_POGRUBIONY, KOLOR_CZERWONY};
-atrybut const gwiazdka = {A_POGRUBIONY, KOLOR_BRAZOWY};
+static atrybut const spacja = {0, KOLOR_BRAK};
+static atrybut const choinka = {0, KOLOR_ZIELONY};
+static atrybut const podstawa = {0, KOLOR_BRAZOWY};
+static atrybut const podpis = {A_POGRUBIONY, KOLOR_CZERWONY};
+static atrybut const gwiazdka = {A_POGRUBIONY, KOLOR_BRAZOWY};
-void inicjuj_rng()
+static void inicjuj_rng()
{
unsigned ziarno = 0;
FILE* f = fopen("/dev/urandom", "rb");
srand(ziarno);
}
-char const rysunek[] =
+static char const rysunek[] =
" *\n"
" /.\\\n"
" /..'\\\n"
" jgs ^^^[_]^^^\n"
;
-void ustaw(atrybut const* attr)
+static void ustaw(atrybut const* attr)
{
static atrybut ostatni = {-1, -1};
if (ostatni.attr == attr->attr && ostatni.kolor == attr->kolor) return;
if ((attr->attr & A_POGRUBIONY) != 0) {
putp(enter_bold_mode);
}
- putp(tparm(set_a_foreground, attr->kolor));
+ if (attr->kolor != KOLOR_BRAK) {
+ putp(tparm(set_a_foreground, attr->kolor));
+ }
}
int main()
if (c >= 'a' && c <= 'z') akt = &podpis;
if (c == '.') akt = &bombki[rand() % ile_b];
if (c == '*') akt = &gwiazdka;
+ if (c == ' ' || c == '\n') akt = &spacja;
if (c == ']') kolor = &choinka;
ustaw(akt);
putchar(c);