From 82a6fa50877a68dbb64426f5c16fed0905bbf8f6 Mon Sep 17 00:00:00 2001 From: 21801009 <21801009@unicaen.fr> Date: Tue, 21 Jun 2022 22:23:08 +0200 Subject: [PATCH] fin du jeu --- jeu.c | 292 +++++++++++++++++++++++++++++++++++--------------------- jeu.h | 8 +- morpion | Bin 32128 -> 32256 bytes 3 files changed, 187 insertions(+), 113 deletions(-) diff --git a/jeu.c b/jeu.c index 415c81b..2cecedc 100644 --- a/jeu.c +++ b/jeu.c @@ -1,35 +1,137 @@ #include "jeu.h" void menu() { - // init_graphics(400,400); - int size_tab = 11; - int nb = 3; - int board[15][15]; - int winner; + init_graphics(400,450); + point p = {166,51}; + aff_pol("Quitter", 20, p, darkred); + point p1 = {100,50}, p2 = {300,25}; + draw_rectangle(p1, p2, red); + p1.y = 75; p2.y = 100; + draw_rectangle(p1, p2, white); + p1.y = 125; p2.y = 150; + draw_rectangle(p1, p2, orchid); + p1.y = 175; p2.y = 200; + draw_rectangle(p1, p2, lightgreen); + p1.y = 225; p2.y = 250; + draw_rectangle(p1, p2, magenta); + p1.y = 275; p2.y = 300; + draw_rectangle(p1, p2, lightblue); + p.x = 100; p.y = 400; + aff_pol("Morpion", 50, p, gold); + p.x = 145; p.y = 300; + aff_pol("Tic-Tac-Toe", 20, p, lightblue); + p.x = 167, p.y = 250; + aff_pol("10x10", 20, p, magenta); + p.y = 200; + aff_pol("15x15", 20, p, lightgreen); + p.x = 180; p.y = 150; + aff_pol("6x7", 20, p, orchid); + p.x = 167; p.y = 100; + aff_pol("Regles", 20, p, white); int r = 1; + int board[15][15]; + int size_tab_x; + int size_tab_y; + int nb; + int winner; + while(1) { + p = wait_clic(); + if(p.x < 250 && p.x > 150) { + if(p.y < 50 && p.y > 25) exit(0); + if(p.y < 100 && p.y > 75) { + init_graphics(550, 450); + p.x = 10, p.y = 425; + aff_pol("Le but du jeu du morpion est d'aligner 3 jetons de la meme couleur", 15, p, white); + p.y = 375; + aff_pol(" en ligne horizontale, verticale ou diagonale.", 15, p, white); + p.y = 325; + aff_pol("Il existe plusieurs variantes :", 15, p, white); + p.y = 275; + aff_pol(" - 10x10 : il faut aligner 5 jetons dans une table de 10*10 cases,", 15, p, white); + p.y = 225; + aff_pol(" - 15x15 : il faut aligner 6 jetons dans une table de 15*15 cases,", 15, p, white); + p.y = 175; + aff_pol(" - 6x7 : il faut aligner 4 jetons dans une table de 7*6 cases.", 15, p, white); + p.y = 125; + aff_pol("Cliquez n'importe ou pour revenir au menu", 15, p, white); + p = wait_clic(); + init_graphics(400,450); + p.x = 166; p.y = 51; + aff_pol("Quitter", 20, p, darkred); + p1.x = 100;p1.y = 50; p2.x = 300; p2.y = 25; + draw_rectangle(p1, p2, red); + p1.y = 75; p2.y = 100; + draw_rectangle(p1, p2, white); + p1.y = 125; p2.y = 150; + draw_rectangle(p1, p2, orchid); + p1.y = 175; p2.y = 200; + draw_rectangle(p1, p2, lightgreen); + p1.y = 225; p2.y = 250; + draw_rectangle(p1, p2, magenta); + p1.y = 275; p2.y = 300; + draw_rectangle(p1, p2, lightblue); + p.x = 100; p.y = 400; + aff_pol("Morpion", 50, p, gold); + p.x = 145; p.y = 300; + aff_pol("Tic-Tac-Toe", 20, p, lightblue); + p.x = 167, p.y = 250; + aff_pol("10x10", 20, p, magenta); + p.y = 200; + aff_pol("15x15", 20, p, lightgreen); + p.x = 170; p.y = 150; + aff_pol("6x7", 20, p, orchid); + p.x = 167; p.y = 100; + aff_pol("Regles", 20, p, white); + } + if(p.y < 150 && p.y > 125) { + size_tab_x = 7; + size_tab_y = 6; + nb = 3; + break; + } + if(p.y < 200 && p.y > 175) { + size_tab_x = 15; + size_tab_y = 15; + nb = 5; + break; + } + if(p.y < 250 && p.y > 225) { + size_tab_x = 10; + size_tab_y = 10; + nb = 4; + break; + } + if(p.y < 300 && p.y > 275) { + size_tab_x = 3; + size_tab_y = 3; + nb = 2; + break; + } + } + } while(r) { - play(board, &winner, size_tab, nb); + play(board, &winner, size_tab_x, size_tab_y, nb); r = replay(winner); } } -void init_board(int board[15][15], int size_tab) { - for(int i = 0; i < size_tab; i++) { - for(int j = 0; j < size_tab; j++) { +void init_board(int board[15][15], int size_tab_x, int size_tab_y) { + for(int i = 0; i < size_tab_x; i++) { + for(int j = 0; j < size_tab_y; j++) { board[i][j] = -1; } } } -void draw_board(int board[15][15], int size_tab) { +void draw_board(int board[15][15], int size_tab_x, int size_tab_y) { point p1, p2; - for(int i = 0; i < size_tab; i++) { - for(int j = 0; j < size_tab; j++) { + for(int i = 0; i < size_tab_x; i++) { + for(int j = 0; j < size_tab_y; j++) { p1.x = i*60+60; p1.y = 0; - p2.x = i*60+60; p2.y = 60*size_tab; + p2.x = i*60+60; p2.y = 60*size_tab_y; draw_big_line(p1,p2,lightgrey); p1.y = i*60+60; p1.x = 0; - p2.y = i*60+60; p2.x = 60*size_tab; + p2.y = i*60+60; p2.x = 60*size_tab_x; draw_big_line(p1,p2,lightgrey); // draw_player(board, i, j); } @@ -44,12 +146,12 @@ void draw_player(int board[15][15] ,int i, int j) { draw_circle(p, 29, red); } -void play(int board[15][15], int *winner, int size_tab, int nb) { - init_graphics(60*size_tab,60*size_tab); - init_board(board, size_tab); - draw_board(board, size_tab); +void play(int board[15][15], int *winner, int size_tab_x, int size_tab_y, int nb) { + init_graphics(60*size_tab_x,60*size_tab_y); + init_board(board, size_tab_x, size_tab_y); + draw_board(board, size_tab_x, size_tab_y); int joueur = 1; - while(end(board, winner, size_tab, nb)) { + while(end(board, winner, size_tab_x, size_tab_y, nb)) { point p = wait_clic(); int pos[2]; pos[0] = p.x/60; @@ -62,59 +164,23 @@ void play(int board[15][15], int *winner, int size_tab, int nb) { } } -int end(int board[15][15], int *winner, int size_tab, int nb) { - for(int i = 0; i < size_tab; i++) { - for(int j = 0; j < size_tab; j++) { - if(nb == 3) { - if(i+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j]) { +int end(int board[15][15], int *winner, int size_tab_x, int size_tab_y, int nb) { + for(int i = 0; i < size_tab_x; i++) { + for(int j = 0; j < size_tab_y; j++) { + if(board[i][j] != -1 ) { + if(i+nb < size_tab_x && test_x(board, i, j, nb)) { *winner = board[i][j]; return 0; } - if(j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3]) { + if(j+nb < size_tab_y && test_y(board, i, j, nb)) { *winner = board[i][j]; return 0; } - if(i+size_tab < size_tab && j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3]) { + if(i+nb < size_tab_x && j+nb < size_tab_y && test_xy(board, i, j, nb)) { *winner = board[i][j]; return 0; } - if(i+size_tab < size_tab && j-size_tab > 0 && board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3]) { - *winner = board[i][j]; - return 0; - } - } - if(nb == 4) { - if(i+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j]) { - *winner = board[i][j]; - return 0; - } - if(j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4]) { - *winner = board[i][j]; - return 0; - } - if(i+size_tab < size_tab && j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4]) { - *winner = board[i][j]; - return 0; - } - if(i+size_tab < size_tab && j-size_tab > 0 && board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4]) { - *winner = board[i][j]; - return 0; - } - } - if(nb == 5) { - if(i+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j] && board[i][j]==board[i+5][j]) { - *winner = board[i][j]; - return 0; - } - if(j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4] && board[i][j]==board[i][j+5]) { - *winner = board[i][j]; - return 0; - } - if(i+size_tab < size_tab && j+size_tab < size_tab && board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4] && board[i][j]==board[i+5][j+5]) { - *winner = board[i][j]; - return 0; - } - if(i+size_tab < size_tab && j-size_tab > 0 && board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4] && board[i][j]==board[i+5][j-5]) { + if(i+nb < size_tab_x && j-nb > 0 && test_yx(board, i, j, nb)) { *winner = board[i][j]; return 0; } @@ -122,8 +188,8 @@ int end(int board[15][15], int *winner, int size_tab, int nb) { } } int k = 0; - for(int i = 0; i < size_tab; i++) { - for(int j = 0; j < size_tab; j++) { + for(int i = 0; i < size_tab_x; i++) { + for(int j = 0; j < size_tab_y; j++) { if(board[i][j]!=-1) k++; } @@ -170,50 +236,58 @@ int replay(int winner) { return 0; } -// int test_x(int board[15][15], int i, int j, int nbtest){ -// if(nbtest == 5) -// return board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j] && board[i][j]==board[i+5][j]; -// if(nbtest == 4) -// return board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j]; -// if(nbtest == 3) -// return board[i][j] != -1 && board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j]; -// else -// exit(0); -// return 1; -// } +int test_x(int board[15][15], int i, int j, int nbtest){ + if(nbtest == 5) + return board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j] && board[i][j]==board[i+5][j]; + if(nbtest == 4) + return board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j] && board[i][j]==board[i+4][j]; + if(nbtest == 3) + return board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j] && board[i][j]==board[i+3][j]; + if(nbtest == 2) + return board[i][j]==board[i+1][j] && board[i][j]==board[i+2][j]; + else + exit(0); + return 1; +} -// int test_y(int board[15][15], int i, int j, int nbtest){ -// if(nbtest == 5) -// return board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4] && board[i][j]==board[i][j+5]; -// if(nbtest == 4) -// return board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4]; -// if(nbtest == 3) -// return board[i][j] != -1 && board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3]; -// else -// exit(0); -// return 1; -// } +int test_y(int board[15][15], int i, int j, int nbtest){ + if(nbtest == 5) + return board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4] && board[i][j]==board[i][j+5]; + if(nbtest == 4) + return board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3] && board[i][j]==board[i][j+4]; + if(nbtest == 3) + return board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2] && board[i][j]==board[i][j+3]; + if(nbtest == 2) + return board[i][j]==board[i][j+1] && board[i][j]==board[i][j+2]; + else + exit(0); + return 1; +} -// int test_xy(int board[15][15], int i, int j, int nbtest){ -// if(nbtest == 5) -// return board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4] && board[i][j]==board[i+5][j+5]; -// if(nbtest == 4) -// return board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4]; -// if(nbtest == 3) -// return board[i][j] != -1 && board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3]; -// else -// exit(0); -// return 1; -// } +int test_xy(int board[15][15], int i, int j, int nbtest){ + if(nbtest == 5) + return board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4] && board[i][j]==board[i+5][j+5]; + if(nbtest == 4) + return board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3] && board[i][j]==board[i+4][j+4]; + if(nbtest == 3) + return board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2] && board[i][j]==board[i+3][j+3]; + if(nbtest == 2) + return board[i][j]==board[i+1][j+1] && board[i][j]==board[i+2][j+2]; + else + exit(0); + return 1; +} -// int test_yx(int board[15][15], int i, int j, int nbtest){ -// if(nbtest == 5) -// return board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4] && board[i][j]==board[i+5][j-5]; -// if(nbtest == 4) -// return board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4]; -// if(nbtest == 3) -// return board[i][j] != -1 && board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3]; -// else -// exit(0); -// return 1; -// } +int test_yx(int board[15][15], int i, int j, int nbtest){ + if(nbtest == 5) + return board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4] && board[i][j]==board[i+5][j-5]; + if(nbtest == 4) + return board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3] && board[i][j]==board[i+4][j-4]; + if(nbtest == 3) + return board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2] && board[i][j]==board[i+3][j-3]; + if(nbtest == 2) + return board[i][j]==board[i+1][j-1] && board[i][j]==board[i+2][j-2]; + else + exit(0); + return 1; +} diff --git a/jeu.h b/jeu.h index 5c0590c..19a1d42 100644 --- a/jeu.h +++ b/jeu.h @@ -4,15 +4,15 @@ void menu(); -void init_board(int[15][15], int); +void init_board(int[15][15], int, int); -void draw_board(int[15][15], int); +void draw_board(int[15][15], int, int); void draw_player(int[15][15] ,int, int); -void play(int[15][15], int*, int, int); +void play(int[15][15], int*, int, int, int); -int end(int[15][15], int*, int, int); +int end(int[15][15], int*, int, int, int); int replay(int winner); diff --git a/morpion b/morpion index 1537e95e302e006fb47562def0698ef020c9dd88..ce231e671490ef77058ace366907c8c2803276cc 100755 GIT binary patch delta 7241 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