diff --git a/APL1.1/SAE11_2021/Makefile b/APL1.1/SAE11_2021/Makefile index 2a8c6a0..e6ce183 100644 --- a/APL1.1/SAE11_2021/Makefile +++ b/APL1.1/SAE11_2021/Makefile @@ -4,14 +4,14 @@ taquin : main.o taquin.o menu.o graph_sup.o main.o : main.c main.h gcc -c main.c -graph_sup.o : graph_sup.c graph_sup.h - gcc -c graph_sup.c - taquin.o : taquin.c taquin.h gcc -c taquin.c menu.o : menu.c menu.h gcc -c menu.c +graph_sup.o : graph_sup.c graph_sup.h + gcc -c graph_sup.c + clean : rm -f *.o \ No newline at end of file diff --git a/APL1.1/SAE11_2021/main.c b/APL1.1/SAE11_2021/main.c index d5a6c7e..9a5a01b 100644 --- a/APL1.1/SAE11_2021/main.c +++ b/APL1.1/SAE11_2021/main.c @@ -3,15 +3,15 @@ #include #include "graph_sup.h" -#include "taquin.h" #include "menu.h" int main(int argc, char* argv[]) { InitialiserGraphique(); CreerFenetre((Maxx() - WIDTH) / 2, (Maxy() - HEIGHT) / 2, 1200, 700); ChoisirTitreFenetre("Taquin"); /* Ben alors Denis, on nous cache des fonctions ? */ - CreateTaquin("./images/luna.png", 500, 445, 4, 4); - Touche(); + while (1) { + if (!DrawMenu()) break; + }; FermerGraphique(); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/APL1.1/SAE11_2021/menu.c b/APL1.1/SAE11_2021/menu.c index e69de29..d305612 100644 --- a/APL1.1/SAE11_2021/menu.c +++ b/APL1.1/SAE11_2021/menu.c @@ -0,0 +1,81 @@ +#include +#include +#include +#include + +#include "taquin.h" +#include "graph_sup.h" + +void UpdateSelection(char* selection, int param) { + if (selection == "lines") { + int i; + SetColor(0, 0, 0); + for (i = 0; i <= 5; i++) DessinerRectangle(WIDTH - 200, 75 + i * 70, 50, 50); //Lignes + SetColor(255, 0, 0); + for (i = 0; i <= 5; i++) DessinerRectangle(WIDTH - 200, 75 + (param-3) * 70, 50, 50); + } else if (selection == "columns") { + int i; + SetColor(0, 0, 0); + for (i = 0; i <= 5; i++) DessinerRectangle(WIDTH/2 + 150, 75 + i * 70, 50, 50); //Lignes + SetColor(255, 0, 0); + for (i = 0; i <= 5; i++) DessinerRectangle(WIDTH/2 + 150, 75 + (param-3) * 70, 50, 50); + } +}; + +int DrawMenu() { + ClearButtons(); + + int MenuHeight = HEIGHT - 120; + int Lines = 3, Columns = 3, i; + + char filename[100]; + strcpy(filename, "./images/luna.png"); + + SetColor(0, 0, 0); + char str[3]; + for (i = 0; i <= 5; i++) { + AddButton(WIDTH/2 + 150, 75 + i * 70, 50, 50, 10 + i); //Colonnes + AddButton(WIDTH - 200, 75 + i * 70, 50, 50, 20 + i); //Lignes + + sprintf(str, "%d", i+3); + EcrireTexte(WIDTH/2 + 175, 100 + i * 70, str, 2); + EcrireTexte(WIDTH - 175, 100 + i * 70, str, 2); + } + + DessinerRectangle(WIDTH/2 - 100, HEIGHT - 100, 200, 80); + AddButton(WIDTH/2 - 100, HEIGHT - 100, 200, 80, 1); + + UpdateSelection("lines", Lines); + UpdateSelection("columns", Columns); + + SetColor(0, 0, 0); + DessinerRectangle(0, 0, WIDTH/2, MenuHeight/3); + DessinerRectangle(0, MenuHeight/3, WIDTH/2, MenuHeight/3); + DessinerRectangle(0, MenuHeight/3 * 2, WIDTH/2, MenuHeight/3); + + DessinerSegment(WIDTH/2, 0, WIDTH/2, MenuHeight); + DessinerRectangle(0, MenuHeight, WIDTH, HEIGHT - MenuHeight); + + while (1) { + if (DrawNextFrame()) { + if (SourisCliquee()) { + int BT_ID = GetButton(_X, _Y); + + if (BT_ID >= 10 && BT_ID <= 15) { + Columns = BT_ID - 7; + UpdateSelection("columns", Columns); + } else if (BT_ID >= 20 && BT_ID <= 25) { + Lines = BT_ID - 17; + UpdateSelection("lines", Lines); + } else { + if (BT_ID == 1) { + ClearButtons(); + EffacerEcran(GetColor(255, 255, 255)); + CreateTaquin(filename, 500, 445, Lines, Columns); + } + } + } + } + } + return 0; +} \ No newline at end of file diff --git a/APL1.1/SAE11_2021/menu.h b/APL1.1/SAE11_2021/menu.h index 78acc9e..2d0fa1c 100644 --- a/APL1.1/SAE11_2021/menu.h +++ b/APL1.1/SAE11_2021/menu.h @@ -1,4 +1,6 @@ #ifndef _MENU_H #define _MENU_H +int DrawMenu(); + #endif \ No newline at end of file diff --git a/APL1.1/SAE11_2021/taquin.c b/APL1.1/SAE11_2021/taquin.c index f61c41c..a00a025 100644 --- a/APL1.1/SAE11_2021/taquin.c +++ b/APL1.1/SAE11_2021/taquin.c @@ -125,8 +125,8 @@ int TaquinRenderLoop() { SourisPosition(); button_id = GetButton(_X, _Y); if (button_id != last_id) { - if (button_id != -1) DrawPiece(button_id, selected); - if (last_id != -1) DrawPiece(last_id, black); + if (button_id > -1) DrawPiece(button_id, selected); + if (last_id > -1) DrawPiece(last_id, black); last_id = button_id; } } @@ -158,8 +158,12 @@ void RandomizeTaquin() { } } +void ShowVictoryScreen() { + +} + /* Crée le Taquin et lance les fonctions liées à la logique et au graphisme du Taquin */ -void CreateTaquin(char * filename, int image_width, int image_height, int lines, int columns) { +void CreateTaquin(char * filename, int ImageWidth, int ImageHeight, int lines, int columns) { /* On externalise les valeurs données afin de pouvoir facilement les utiliser plus tard. */ int i; @@ -167,8 +171,8 @@ void CreateTaquin(char * filename, int image_width, int image_height, int lines, Columns = columns; strcpy(Filename, filename); - ImageX = image_width; - ImageY = image_height; + ImageX = ImageWidth; + ImageY = ImageHeight; PieceX = ImageX / Columns; PieceY = ImageY / Lines; @@ -188,9 +192,17 @@ void CreateTaquin(char * filename, int image_width, int image_height, int lines, RemplirRectangle(OffsetX - 1, OffsetY - 1, ImageX + 2, ImageY + 1); ChargerImage(Filename, 50, OffsetY, 0, 0, ImageX, ImageY); - RandomizeTaquin(); + AddButton(75, HEIGHT - 100, 250, 60, -2); //Bouton Quitter + AddButton(WIDTH - 325, HEIGHT - 100, 250, 60, -3); //Bouton Sauvegarder ? + + SetColor(0, 0, 0); + DessinerRectangle(75, HEIGHT - 100, 250, 60); + DessinerRectangle(WIDTH - 325, HEIGHT - 100, 250, 60); + + //RandomizeTaquin(); UpdateTaquin(); + if (TaquinRenderLoop()) { - /*ShowVictoryScreen()*/ + ShowVictoryScreen(); } } \ No newline at end of file diff --git a/APL1.1/SAE11_2021/taquin.h b/APL1.1/SAE11_2021/taquin.h index 7d0d5c3..2327902 100644 --- a/APL1.1/SAE11_2021/taquin.h +++ b/APL1.1/SAE11_2021/taquin.h @@ -1,8 +1,6 @@ #ifndef _TAQUIN_H #define _TAQUIN_H -extern int ImageX, ImageY; - void UpdateTaquin(); void UpdatePiece(int X, int Y, int Index, couleur Color); void CreateTaquin(char * FileName, int ImageX, int ImageY, int RowNumber, int ColumnNumber);