CC2

Teil 9

C Teil 8: ASCII-GFX Canvas | | C Teil 10: ASCII-GFX Vektorgraphik

Wir lernen weitere graphische Programmiertechniken und in diesem Zusammenhang weitere Anwendungen von Zeiger, Arrays und dynamischer Speicherallozierung kennen:

ASCII GFX Framework:

Diese Techniken werden Stück für Stück in der Vorlesung demonstriert. Sie sind auch im NCurses Video-Tutorial ausführlich erklärt (Das Tutorial entstand während des Coronasemesters 2020).

Obige Demos auf Source-Forge:

Beispielcode für einen Sprite:

int x = 10, y = 5;
const char elephant[] = " /^^^^^^^\\ "
                        "/|    C o| "
                        " |  _  |-\\ "
                        " |_| |_|   ";
enable_sprite(1, 11, 4); // enable sprite #1 with size 11x4
set_sprite_text(1, elephant); // set data for sprite #1 as text string with size 11x4
while (getch() != 'q')
{
   set_sprite_position(1, x, y); // position elephant sprite #1 at (x, y)
   center_window(x, y): // camera follows elephant at (x, y)
   refresh();
   msleep(100);
}

Beispielcode für einen farbigen & teil-transparenten Sprite:

const char elephant[] = "./^^^^^^^\\."
                        "/|   5C0  6o0|."
                        ".|  _  |2-0\\."
                        ".|_|.|_|...";
enable_sprite(1, 11, 4);
set_sprite_text(1, elephant, '.', true); // '.' is translucent and digits are colors
...

Änderungen für eine sog. Grid-Char Area, bei der eine Zelle nicht 1 Char sondern jeweils einen 5×3 Grid-Char repräsentiert:

Vorher (Scroll-Area)Nachher (5×3 Grid-Char Area)
#include "scrollarea.h"#include "gridarea.h"
set_area_size(sx, sy)set_grid_size(sx, sy)
clear_area()clear_grid()
 optional: set_grid_border(...)
set_cell(x, y, ...)set_grid(x, y, ...)
render_text_area(...)set_grid_text(...)
center_window(...)redraw_grid_window(...)
release_area();release_grid();

Beispielcode, um ein 5×3 Zeichen umzudefinieren:

set_grid_char_text('#',
                   "#####"
                   "#####"
                   "#####", true); // '#' represents an inverted space

Beispielcode, um ein 5×3 Zeichen umzudefinieren und zu animieren:

set_grid_char_text('-',
                   "     "
                   "  -  "
                   "     ");
set_grid_char_text('1',
                   "     "
                   "   - "
                   "     ");
set_grid_char_text('2',
                   "     "
                   "    -"
                   "     ");
set_grid_char_text('3',
                   "     "
                   "-    "
                   "     ");
set_grid_char_text('4',
                   "     "
                   " -   "
                   "     ");
set_grid_animation_string('-', "-1234");

Weitere TOP:

  • Klausurstoff:
    • Der Stoff umfasst alle in der Vorlesung und im Praktikum behandelten Themen!
    • Die konkrete ASCII-GFX API ist jedoch nicht Klausurstoff, es wird aber ein prinzipielles Verständnis der eingesetzten graphischen Techniken wie Back-Buffer, Sprites usw. vorausgesetzt! Die in der Vorlesung behandelten Funktionen der NCurses API können in Form von vorgegebenem Code oder Lücken-Text vorkommen.
    • Die Ubuntu-Installation ist nicht Teil des Stoffs, es werden aber Kenntnisse zur Benutzung des Terminals und der Tool-Chain vorausgesetzt!
  • Musterklausur
  • Feedback / Evaluierung
    1. Was hat Ihnen besonders gefallen?
    2. Welche Verbesserungsvorschläge haben Sie?

Praktikum:

Im Praktikum zeigen Sie jeweils Ihren aktuellen Fortschritt bei der Umsetzung Ihrer Spieleidee.

Sie wählen die im Praktikum umzusetzenden Kategorien.

In diesem Praktikum besteht weiterhin Anwesenheitspflicht!

Protokoll/Hausaufgaben:

Dokumentieren Sie wie gewohnt den jeweiligen Fortschritt bei der Umsetzung Ihres Spiels bis zur Abgabe!

Abgabeschluss für das Protokoll ist der letzte Tag des Vorlesungszeitraums!

C Teil 8: ASCII-GFX Canvas | | C Teil 10: ASCII-GFX Vektorgraphik

Options: