ZAP - Tutorial Bomber (2021/2022)
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Cvičenie sa venuje knižnici curses, ktorá sa využíva pri programovaní hry Bomber – bombardér postupne preletí ponad mesto s budovami rôznej výšky a snaží sa ich zlikvidovať, pričom hráč vyhráva po prelete celým hracím poľom. Vysvetľuje sa nastavenie prekladu (linkovanie knižnice cez CC1 alebo profile súbor) a základná inicializácia knižnice curses – funkcie ako initscr, cbreak, noecho, keypad, curs_set a nodelay, ako aj nutnosť volať endwin na konci programu. Ukazuje sa aj typická chyba pri chýbajúcom linkovaní (undefined reference) a pri zabudnutom endwin, kedy treba terminál obnoviť príkazom reset. Následne sa začína implementácia hry – vytvorenie poľa world reprezentujúceho výšky budov, pričom jeho veľkosť sa odvodzuje od počtu stĺpcov terminálu (premenná COLS) zmenšeného o okraje, a náhodné generovanie výšok budov pomocou funkcie rand po inicializácii generátora cez srand.
- - Knižnica curses umožňuje prekresľovanie obrazovky namiesto klasického výpisu do terminálu.
- - Pri preklade je potrebné knižnicu curses prilinkovať (nastavenie v CC1/profile), inak vzniká chyba undefined reference.
- - Inicializácia zahŕňa initscr, cbreak, noecho, keypad(true) pre šípky, curs_set(0) na skrytie kurzora a nodelay pre nečakanie na Enter.
- - Program musí byť vždy korektne ukončený funkciou endwin, inak sa terminál správa nekorektne a treba použiť príkaz reset.
- - Hra Bomber: lietadlo preletí ponad mesto s budovami a musí ich všetky zbombardovať, výhra nastáva po prelete celým poľom.
- - Pole world reprezentuje výšky budov, jeho veľkosť sa počíta z premennej COLS (šírka okna) mínus okraje po 5 znakov na každej strane.
- - Výšky budov sa generujú náhodne pomocou rand() po jednorazovej inicializácii srand(time(NULL)).
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky