ASCII Art

Téma: Celková koncepce programu

Procvičované učivo: celková koncepce programu, dynamická práce s pamětí, funkce

Napište v jazyku C jednoduchou knihovnu funkcí pro vykreslování obrázků pomocí znaků (tzv. ASCII art).

Knihovna by měla mít tyto vlastnosti:

  • Obrázky se budou vykreslovat pomocí plátna - dvojrozměrné matice, která bude obsahovat jednotlivé znaky.
  • Vykreslování se tedy neprovádí přímo na výstupu, ale pouze dochází ke změně daného plátna (struktura canvas).
  • Je možné pracovat současně s několika plátny.
  • Je možné "vykreslovat" i za hranicí kreslící plochy, tyto body se ale nebudou při zobrazení plátna vykreslovat. Jinými slovy, při pokusu o kreslení mimo plátno nedojde k vyjímce při běhu programu.
  • Knihovna by měla být samostatným modulem, bude tedy tvořena jedním zdrojovým a jedním hlavičkovým souborem.

V knihovně vytvořte strukturovaný datový typ canvas a dále definujte tyto funkce:

/* vytvori platno */
canvas *canvas_create(int x, int y);

/* nastavi dany bod na zadanou hodnotu */
void canvas_set_point(canvas *c, int x, int y, char character);

/* vrati znak daneho bodu */
int canvas_get_point(canvas *c, int x, int y);

/* nakresli obdelnik */
void canvas_draw_rect(canvas *c, int x, int y, int width, int height, char ch);

/* vycisti platno */
void canvas_clear(canvas *c);

/* vykresli obsah platna na standardni vystup */
void canvas_print(canvas *c);

/* vykresli obsah platna do souboru */
void canvas_output(canvas *c, FILE *f);

Jednotlivé funkce ve vytvořené knihovně poté otestujte z modulu hlavní funkce.

Příklad výstupu:


    xxxxxxx
    x     x
    x   ***********
    x   * x       *
    x   * x       *
    x   * x       *
    x   ***********
    x     x
    x     x
    xxxxxxx

Příklad výstupu:


     ***********
     *         *
     *  o   o  *
     *    |    *
     *         *
     *  \___/  *
     *         *
     ***********

Povolené knihovny: stdio.h, stdlib.h


Creative Commons License Sbírka úloh z jazyka C. © Katedra informatiky Univerzity Palackého v Olomouci, 2009.
Projekt byl vytvořen za podpory grantu FRVŠ 2061/2009/G1.