Ciele cvičenia
Cvičenie bude zamerané na prácu s dvojrozmerným (2R) poľom. Študenti si osvoja spôsob deklarácie a inicializácie 2R poľa a tiež si prehĺbia poznanie v problematike indexácie polí. Druhá časť cvičenia sa zameriava na prácu s reťazcami.
Odporúčaná literatúra a dôležité odkazy
[1] KPI-FEI-TUKE: Prednáška č. 7
[2] KPI-FEI-TUKE: Cvičenie č. 7
Úloha 1
Naprogramujte hru "piškvorky" .
- Veľkosť hracieho poľa je statická 5 x 5 prvkov
- Informácie o polohe piškvoriek sú uložené v matici (2R pole) typu int takto:
- 0 - prázdna bunka
- 1 - Hráč č. 1 → X
- 2 - Hráč č. 2 → O
- Matica polohy piškvoriek je inicializovaná nulami!
- Vykreslenie hracej plochy vykonáva samostatná funkcia, jej vstupným parametrom je matica polohy piškvoriek
- Hra bude bežať v slučke while dovtedy, dokiaľ jeden z hráčov nevyhrá
- Po každom ťahu hráča, sa vykreslí hracie pole
Úloha 1.1 (Pre nadšencov)
- Vytvorte algoritmus, ktorý bude simulovať jedného z hráčov tak, aby bol úctyhodným súperom.
Dôležité míľniky v procese developmentu
- Inicializácia hracieho poľa
- Vytvorenie funkcie pre vykreslenie hracieho poľa
- Vytvorenie funkcie pre načítanie kroku hráča
- Vytvorenie funkcie pre vyhodnotenie či niektorý z hráčov vyhral
1. míľnik - kostra programu
Nasledujúci kód predstavuje kostru programu. Vo vrchnej časti sú uvedené deklarácie funkcií, ktorých definície je potrebné naprogramovať. Slučku while je v začiatočnej fáze vývoja potrebné zakomentovať a vrátiť sa k nej až keď budú hotové všetky potrebné funkcie.
#include <stdio.h> // deklarácie funkcii int is_won(const int size, const int player, const int grid[][size]); void draw(const int size, const int grid[][size]); void player_move(const int size, const int player, int grid[][size]); int main() { int size = 5; int player=1; int i, j; int grid[size][size]; for(i=0; i<size; i++) for(j=0; j<size; j++) { grid[i][j] = 0; } draw(size, grid); while(1) { if (is_won(5, 1, grid) || is_won(5, 2, grid)) // Ukončenie nekonečného cyklu. Funkciu is_won() je potrebné vyvinúť break; // tu sa bude volať funkcia pre vykreslenie hracieho poľa draw() // tu sa bude volať funkcia pre krok 1. alebo 2. hráča player_move() } return 0; }