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:
- Das Frame-Work verwendet Double-Buffering für die Darstellung der Scroll-Area
- Folgende Anwendungsmöglichkeiten werden unterstützt:
- Sprites and collision detection
- Grid-Char Area, Grid-Char Font and Font Animation
- Flood-Fill (Flächenfüll-Algorithmus)
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:
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:
"/| 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:
"#####"
"#####"
"#####", true); // '#' represents an inverted space
Beispielcode, um ein 5×3 Zeichen umzudefinieren und zu animieren:
" "
" - "
" ");
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
- Was hat Ihnen besonders gefallen?
- 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 →