CC2

Teil 8

C Teil 7: Strukturen | | C Teil 9: ASCII-GFX Sprites

Wir lernen weitere Programmiertechniken unter Benutzung von Zeigern kennen:

  • Dynamische Speicherverwaltung mit malloc/free bzw. new/delete

Wir lernen weitere graphische Programmiertechniken 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 Demo auf Source-Forge:

Zum Ausprobieren nochmal die gesamte ASCII-GFX Bibliothek herunterladen und obigen Demo-Code über main.cpp drüber kopieren:
  • svn export https://svn.code.sf.net/p/ascii-gfx/code/ mydemo
  • cd mydemo
  • cp examples/scrolldemo.cpp main.cpp
  • cmake . && make && ./main

Beispielcode:

int sx = 60, sy = 30;
set_area_size(sx,sy);
set_window_size(COLS, LINES);

render_frame(0, 0, sx-1, sy-1);

while (getch() != 'q')
{
   center_window(x, y): // camera follows (x, y)
   refresh();
   msleep(100);
}

release_area();

Praktikum:

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

Wir lernen, wie man die Dokumentation von ASCII-GFX erzeugt (doxygen), liest (index.html), interpretiert und die API benutzt (anhand des Beispiels “scrollarea.h”).

Es ist sinnvoll, mindestens eine der oben vorgestellten Techniken konkret zu benutzen! In der Regel ist es eigentlich immer sinnvoll einen “Drawing Canvas” als Grafik zu benutzen (z.B. für Sprites), auch wenn man primär eigentlich gar keinen Bedarf an Side-Scrolling hat. Die folgenden Änderungen müssen dafür vorgenommen werden:

Vorher (Ncurses)Nachher (Scroll-Area)
 #include "scrollarea.h"
 set_area_size(sx, sy) und set_window_size(COLS, LINES);
clear()clear_area()
mvaddch(y, x, ...)set_cell(x, y, ...)
mvprintw(...)render_text_area(...)
use_color(...)use_cell_color(...)
im: game_loop()zusätzlich: center_window(...)
 release_area();

Protokoll:

Fragen fürs Protokoll:

  • Was ist eine API?
  • Was für einen Zweck hat die API?
  • Wie dokumentiert man am besten eine API?

Welches Feature planen Sie konkret einzusetzen bzw. haben Sie prototypisch ausprobiert?

Hausaufgaben:

Dokumentieren Sie den jeweiligen Fortschritt bei der Umsetzung Ihres Spiels!

Bis zum Ende des Praktikums sollen die einzelnen Schritte, die Sie bei der Programmierung Ihres Spiels durchlaufen, in Ihrem Protokoll nachvollziehbar dokumentiert sein.

Natürlich soll auch das Ergebnis und der Ablauf des Spiels dokumentiert werden, d.h. fügen Sie Screen-Shots ein, welche den Spielablauf nachvollziehbar machen und erklären Sie, was auf den Screenshots zu sehen ist. Die Details dazu finden Sie hier:

Richtlinen für die Abgabe

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

C Teil 7: Strukturen | | C Teil 9: ASCII-GFX Sprites

Options: