#include #include #include #include "world.h" #include "game.h" // Funkcia sa zavolá na začiatku hry void* init_game() { // Vytvoríme stav hry struct game* stav = calloc(1, sizeof(struct game)); // Nastavíme počiatočné pozície stav->myska_x = 5; stav->myska_y = 5; stav->macka_smer_x = 0; stav->macka_smer_y = 0; stav->macka_x = 15; stav->macka_y = 15; stav->skore = 0; stav->koniec_hry = 0; strcpy(stav->sprava, "Chyt myšku! Používaj šípky."); return stav; } // Hlavná herná slučka - volá sa stále dokola int game_event(struct event* event, void* game) { struct game* stav = game; // Ak stlačil ESC, koniec hry if (event->type == EVENT_ESC) { return 1; } // Ak je koniec hry, nič nerob if (stav->koniec_hry) { return 0; } // Kontrola, či mačka chytila myšku if (stav->macka_x == stav->myska_x && stav->macka_y == stav->myska_y) { stav->skore++; sprintf(stav->sprava, "Skóre: %d", stav->skore); // Nastav novú náhodnú pozíciu myšky stav->myska_x = rand() % event->width; stav->myska_y = rand() % event->height; } // Pohyb mačky podľa klávesnice if (event->type == EVENT_KEY) { if (event->key == KEY_UP) { stav->macka_smer_x = 0; stav->macka_smer_y = -1; } else if (event->key == KEY_DOWN) { stav->macka_smer_x = 0; stav->macka_smer_y = 1; } else if (event->key == KEY_LEFT) { stav->macka_smer_x = -1; stav->macka_smer_y = 0; } else if (event->key == KEY_RIGHT) { stav->macka_smer_x = 1; stav->macka_smer_y = 0; } } // Automatický pohyb mačky (každý časový interval) if (event->type == EVENT_TIMEOUT) { // Pohyb mačky int nova_x = stav->macka_x + stav->macka_smer_x; int nova_y = stav->macka_y + stav->macka_smer_y; // Kontrola, či je pohyb v rámci obrazovky if (nova_x >= 0 && nova_x < event->width && nova_y >= 0 && nova_y < event->height) { stav->macka_x = nova_x; stav->macka_y = nova_y; } // Náhodný pohyb myšky (1 ku 4 šanca, že sa pohne) if (rand() % 4 == 0) { int smer = rand() % 4; switch (smer) { case 0: if (stav->myska_y > 0) stav->myska_y--; break; case 1: if (stav->myska_y < event->height-1) stav->myska_y++; break; case 2: if (stav->myska_x > 0) stav->myska_x--; break; case 3: if (stav->myska_x < event->width-1) stav->myska_x++; break; } } } // Vykreslenie hry clear_screen(); // Vykreslenie mačky (žltá na červenom) set_color_cell('M', stav->macka_x, stav->macka_y, COLOR_YELLOW, COLOR_RED); // Vykreslenie myšky (biela na modrom) set_color_cell('m', stav->myska_x, stav->myska_y, COLOR_WHITE, COLOR_BLUE); // Vykreslenie správy set_message(stav->sprava, 1, 0); return 0; }