ZAP - Tutorial Bomber (2021/2022)

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.