From f560dd60609953f78e82863ff63663f4548c3d4d Mon Sep 17 00:00:00 2001 From: Matej Hajduk Date: Wed, 11 Jun 2025 12:22:15 +0200 Subject: [PATCH] hra --- du8/Makefile | 15 +++++++ du8/game.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++ du8/game.h | 23 ++++++++++ du8/game.o | Bin 0 -> 4080 bytes du8/main.c | 37 ++++++++++++++++ du8/main.o | Bin 0 -> 2672 bytes du8/tictactoe | Bin 0 -> 17128 bytes du8/world.c | 39 +++++++++++++++++ du8/world.h | 23 ++++++++++ du8/world.o | Bin 0 -> 3120 bytes 10 files changed, 254 insertions(+) create mode 100644 du8/Makefile create mode 100644 du8/game.c create mode 100644 du8/game.h create mode 100644 du8/game.o create mode 100644 du8/main.c create mode 100644 du8/main.o create mode 100755 du8/tictactoe create mode 100644 du8/world.c create mode 100644 du8/world.h create mode 100644 du8/world.o diff --git a/du8/Makefile b/du8/Makefile new file mode 100644 index 0000000..662004c --- /dev/null +++ b/du8/Makefile @@ -0,0 +1,15 @@ +CC=gcc +CFLAGS=-Wall -Wextra -std=c99 +LDFLAGS=-lncurses + +SRC=main.c game.c world.c +OBJ=$(SRC:.c=.o) +EXEC=tictactoe + +all: $(EXEC) + +$(EXEC): $(OBJ) + $(CC) -o $@ $^ $(LDFLAGS) + +clean: + rm -f $(EXEC) $(OBJ) diff --git a/du8/game.c b/du8/game.c new file mode 100644 index 0000000..3ba2e65 --- /dev/null +++ b/du8/game.c @@ -0,0 +1,117 @@ +#include +#include "game.h" +#include "world.h" // * + +int select_game_mode() { + world_clear(); // * + world_print("Zvol si herny rezim:\n1. PvP\n2. PvE\n3. AI vs Human\n"); // * + char c = world_read_key(); // * + return c - '0'; +} +void init_game(GameState *game, int mode) { + game->mode = mode; + game->current_player = 0; + game->moves_made = 0; + + char default_symbols[MAX_PLAYERS] = {'X', 'O', 'A', 'B'}; + for (int i = 0; i < MAX_PLAYERS; i++) { + game->symbols[i] = default_symbols[i]; + } + + if (mode == 1) { + game->board_size = 4; + game->num_players = 3; + } else if (mode == 2) { + game->board_size = 2; // začne s 2x2, rastie do 4x4 + game->num_players = 2; + } else { + game->board_size = 3; + game->num_players = 2; + } + + for (int y = 0; y < MAX_BOARD_SIZE; y++) { + for (int x = 0; x < MAX_BOARD_SIZE; x++) { + game->board[y][x] = ' '; + } + } +} +void draw_game(GameState *game) { + for (int y = 0; y < game->board_size; y++) { + for (int x = 0; x < game->board_size; x++) { + world_set_cursor(x * 4 + 1, y * 2 + 1); // * + world_print("%c", game->board[y][x]); // * + } + } + world_set_cursor(0, game->board_size * 2 + 2); // * + world_print("Na rade je hrac: %c\n", game->symbols[game->current_player]); // * +} +void handle_input(GameState *game) { + int x = 0, y = 0; + while (1) { + world_set_cursor(x * 4 + 1, y * 2 + 1); // * + char key = world_read_key(); // * + if (key == 'w' && y > 0) y--; + else if (key == 's' && y < game->board_size - 1) y++; + else if (key == 'a' && x > 0) x--; + else if (key == 'd' && x < game->board_size - 1) x++; + else if (key == ' ') { + if (game->board[y][x] == ' ') { + game->board[y][x] = game->symbols[game->current_player]; + game->moves_made++; + break; + } + } + } +} +void computer_move(GameState *game) { + for (int y = 0; y < game->board_size; y++) { + for (int x = 0; x < game->board_size; x++) { + if (game->board[y][x] == ' ') { + game->board[y][x] = game->symbols[game->current_player]; + game->moves_made++; + return; + } + } + } +} + +int check_winner(GameState *game) { + int max_line = 0; + int size = game->board_size; + + for (int p = 0; p < game->num_players; p++) { + char sym = game->symbols[p]; + int longest = 0; + + // Kontrola horizontálne, vertikálne a diagonálne + for (int y = 0; y < size; y++) { + int row = 0, col = 0; + for (int x = 0; x < size; x++) { + row = (game->board[y][x] == sym) ? row + 1 : 0; + col = (game->board[x][y] == sym) ? col + 1 : 0; + if (row > longest) longest = row; + if (col > longest) longest = col; + } + } + + int diag1 = 0, diag2 = 0; + for (int i = 0; i < size; i++) { + diag1 = (game->board[i][i] == sym) ? diag1 + 1 : 0; + diag2 = (game->board[i][size - 1 - i] == sym) ? diag2 + 1 : 0; + if (diag1 > longest) longest = diag1; + if (diag2 > longest) longest = diag2; + } + + if (longest >= 3) { + game->current_player = p; + return 1; + } + + if (longest > max_line) { + max_line = longest; + } + } + + return 0; +} + diff --git a/du8/game.h b/du8/game.h new file mode 100644 index 0000000..8f86f19 --- /dev/null +++ b/du8/game.h @@ -0,0 +1,23 @@ +#ifndef GAME_H +#define GAME_H + +#define MAX_PLAYERS 4 +#define MAX_BOARD_SIZE 10 + +typedef struct { + int board_size; + int num_players; + int mode; // 1 = PvP, 2 = PvE, 3 = AI vs Human + int current_player; + int moves_made; + char board[MAX_BOARD_SIZE][MAX_BOARD_SIZE]; + char symbols[MAX_PLAYERS]; +} GameState; + +int select_game_mode(); +void init_game(GameState *game, int mode); +void draw_game(GameState *game); +void handle_input(GameState *game); +void computer_move(GameState *game); +int check_winner(GameState *game); +#endif diff --git a/du8/game.o b/du8/game.o new file mode 100644 index 0000000000000000000000000000000000000000..c0435cb5532ea58e0947f1cb7c86ba0b726dcd02 GIT binary patch literal 4080 zcmbtX-ES0C6u+}=ftKPHf>Bd7^B@QThPLuRDKQIpWmJTwvBs!m9d-wHX?M5I&h~?_ zm1LsnFeRyp4?Y+_p8O98CIr@yuxsK235~8vjeRI&H|@h3o3Jq(*K_XN+nr9f#E+BA z-gAEEo^#LF+-X0er(O+65)mYkmq|ksC?R8=4L-!!5P5=ZBYy;+|8rQiAE?$!*A2u= z_@iEHV~d?{U=41D)`Pcb-759`aK~fcquSY`otclSPV25c=*6bh-kj>tqBA^i4{kv& zA7X*HY!@Dqr>pOrId(ix*~!b@4lSvl2d|%MTUDLmB9mrL1tu+8lB{g0W%@TOJ1=FP zVjf5<9>d(Wwg9`_2g-m@1{z9am!EWPa3i-tI8RsLmnf@t^l{vKK;4C3lgR_(MdfgS_SP5L*#*p~gU=-?vUa+>j5}4fZjJXZ7`4F7jzjpd$4P{t^Dw>dfi*P#&DFsf=GGo%2$Ag$%J$M$sin+GpF6d z)>^j~C)h)rnDM`ebN9Ll3eJ8Ah44+$5I|=eH-eoljVAbP<Yo^Sgn+spT&Lf=Yljyq)m7_}EwCFukAI;?O0S z?BzB#XEt4O&B4%h@|dP`^OD!R1nvgt!t^FsZMp!RrzRilX2=XG6 z_k+x@8MyY`)Yvt^b9xiPY4U=@y~A!Cm_Z&+#TyO|9lR3zz!a*&a%$p4Tw4t%t6nFo zaO3eTDlDf}F0Hbhs*ppqkyCadFuh&HwhkBV!Ok1_$yt8Up$h|a9?P;|(|L;)amou$ zsI{LKgR@&<&RPA>-XY}O@zkiCj>|FKNKVOyekq*6I+`8C4seKe;uqd!5ZxF><@A6 zGqAGHJeS3?YXiJ@13Uyc`o|TC)fm>-;c4doJ-~5)91{d$HHTG)r`i5-z;XW>tQ`>R z0jw50h+pLc!fFrLryL)`;Q?YbN9KZ-(3J>D>!W(a45JiIq@p^RNExHiaAZ{149<@k z@ubOlL)W6=5q*lplX2IIgu`i5i;RRLv61k3Ej~)3hBm<*a+|bnh9emxoia#FOGZca za6CDdF-atqfJHap+;N>mVmdgPh$oY}0paby7=bWs>|zaWBqZz;5~h!-3Vb($K)8Ps zJOb}Q5D4+j@CZD@>y3E32mi){Z}s3mb6lKz5OhdOp8ei)pX2>O|6V@>92b82m>2j? zc=mh!SRUN#=b8ui<|T7~sODQ367u0f{=kQeIlSV-#k_s(!^OPie7Kl5qNJx1rgjci z({R_A;0%3KQ%rr*BuZ2>HKLqLr-@>uTmi--p~K)Q$&{%pa0eb>bH?Qh$&4~)q{ei^ zoB|v4q{qVN4VYsd$^TnqFvr$nFT51u!njYt$6#%1H*nbd&>G@0J@6esI?N5Qr^w>H zg!Ht#klnB%F7A5{lk2{71@1q8KPb@Wf3?T^4SjlN2t;y&pZ^959un~js2>=#7w@0I zTX0x`Fg`Dd_{Dl0l!Eu}JIL+581nwTLxAB{fBZe%UIv|){PAA|CHnN+4|4mW*BE%e zJx*b>{>QN4Ky&WG?gqSnguUp0v$N4;58oK$3FCjMc#hv5efoP35Sc>-5dLlIC4c?4 RgR+@@mB(*-je+;u{|)ms#1sGk literal 0 HcmV?d00001 diff --git a/du8/main.c b/du8/main.c new file mode 100644 index 0000000..a774d64 --- /dev/null +++ b/du8/main.c @@ -0,0 +1,37 @@ +#include +#include "game.h" +#include "world.h" // * + +int main() { + world_init(); // * inicializácia world + + GameState game; + int mode = select_game_mode(); + init_game(&game, mode); + + while (1) { + world_clear(); // * vyčistenie obrazovky + draw_game(&game); // * vykreslenie hracieho poľa + + if (check_winner(&game)) { + world_print("\nVyhral hrac %c!\n", game.symbols[game.current_player]); // * výpis + break; + } else if (game.moves_made >= game.board_size * game.board_size) { + world_print("\nRemiza!\n"); // * výpis + break; + } + + if (game.mode == 3 && game.current_player == 1) { + computer_move(&game); + } else { + handle_input(&game); // * ovládanie + } + + game.current_player = (game.current_player + 1) % game.num_players; + } + + world_print("Stlač akúkoľvek klávesu pre ukončenie...\n"); // * výpis + world_read_key(); // * caka na vstup + world_end(); // * + return 0; +} diff --git a/du8/main.o b/du8/main.o new file mode 100644 index 0000000000000000000000000000000000000000..b6eec834ac741e67210c444df66830959a4b1ede GIT binary patch literal 2672 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 literal 0 HcmV?d00001 diff --git a/du8/world.c b/du8/world.c new file mode 100644 index 0000000..bec49ec --- /dev/null +++ b/du8/world.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include "world.h" + +void world_init() { + initscr(); // inicializácia ncurses + raw(); // vypne linkový režim (bez enter) + keypad(stdscr, TRUE); // povolí šípky + noecho(); // nevypisuje znaky + curs_set(1); // viditeľný kurzor +} + +void world_end() { + endwin(); // ukončí ncurses +} + +void world_clear() { + clear(); // vyčistí obrazovku + refresh(); // prekreslí +} + +void world_print(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + vw_printw(stdscr, fmt, args); + va_end(args); + refresh(); +} + +void world_set_cursor(int x, int y) { + move(y, x); + refresh(); +} + +char world_read_key() { + return getch(); // načítanie jedného znaku +} + diff --git a/du8/world.h b/du8/world.h new file mode 100644 index 0000000..f17adb6 --- /dev/null +++ b/du8/world.h @@ -0,0 +1,23 @@ +#ifndef WORLD_H +#define WORLD_H + +// Inicializuje (ncurses). +void world_init(); + +// Ukončí ncurses +void world_end(); + +// Vymaže obrazovku. +void world_clear(); + +// Vypíše ynak pozíciu kurzora. +void world_print(const char *fmt, ...); + +// Presunie kurzor na (x, y). +void world_set_cursor(int x, int y); + +// Prečíta jeden ynak +char world_read_key(); + +#endif + diff --git a/du8/world.o b/du8/world.o new file mode 100644 index 0000000000000000000000000000000000000000..e315a73122a4944ff08f4fbf96ecde0731139648 GIT binary patch literal 3120 zcmbtVO^6&t6t3B9l2x;r@s~(M20`6M)69ewmMCFlS+|iy7iC1yrMG9MH#5$!Jw2IS zHM&tp7>9vX$SsF}Ui9Qe@StWOhsBF{^x$DH0g)V5yaZWT-&b8PQx?+~{h<0)eeZj( zs_RvCf3S4!g{eeBFcRXd7>}40VsB>L&&h61%!*^;ujHeD=biq|-@(a;GdPU?kI3Tm zcgBwEVB~On^~S&Aw6TijKx3#2FW=ggGyE`jaB$%CzkOYrD{ImW%Vf^=do5{(8)QBn zh3TZVw3W2ZZzrw%wWPKBP15p5Nvr-#((3FctxJ0)XE6QvoJ`wuC?-4F>1D{y5Vg~r zr(Oom;Zn-!_ZDdA40|gu{ay|xdUa=b1wqbW7%lDRxVLcza+Z?wR5WXNSZ>cxcXr45 z=vJzKX}{mOtx^y2`-Ahh`>`3dP_-6Sfz=ygd2#VfdM;n+G{R0go3-cd%&BZg4zur{ zK5b{_Ek)BiPE$)!LoJtI%8Mx>M&J%n10INsNWAlkNNl7MCyyPS*`@+NLOdF7D*!+%aZ^1Oxu z5oFEDenD;0yk8Ly{bx!q&j4}X#pp%18PrO4F|ux@Q3(Ye?P4GTuPfSN3Eir{+44%F z(e#VurYLrTw%hhY734Qcf?BuIP(-ojdx7XG6Zq?a-!3a(E2uO=ak1;lPFJ{YJM@ZG zw^**a>t3a%WR%^-G)>A=Z(j5j9r#|!rNxNu1wSm7g}^xkaCg!6>B9sZ2T1^jJI?%r zAPIEe#Sv=EKL(Nj{ZVSn;~WCuale_*f+T>)8km0`Bmw+A)R=!2B*B~)=L&#+mKy7E zt^ia2RzyoZ-jVewRc}*oDIWQ8URa-r(JyFvJ^zZv->c=R#^iZd)8DV@KaA0Ts_FH4 zug2)V)byw+zgL?20QLcmky9P!`FpTt@O=@$Z5teDB@QZDr?5C5