diff --git a/JournalDeBord/src/SUMMARY.md b/JournalDeBord/src/SUMMARY.md index 8a7959d..278a10e 100644 --- a/JournalDeBord/src/SUMMARY.md +++ b/JournalDeBord/src/SUMMARY.md @@ -4,6 +4,7 @@ - [Première entrevue](./rapports/130223.md) - [Deuxième entrevue](./rapports/200223.md) +- [Troisième entrevue](./rapports/230323.md) # Histoire diff --git a/JournalDeBord/src/histoire/plot_story.md b/JournalDeBord/src/histoire/plot_story.md index 2de1ea2..b89f35b 100644 --- a/JournalDeBord/src/histoire/plot_story.md +++ b/JournalDeBord/src/histoire/plot_story.md @@ -1,36 +1,39 @@ -Intro histoire +# Intro histoire Après notre premier quadri à l unif assez compliqué entre calculus, inégalités et physique et la perte de temps dans les transports en commun. Je décide de enfin me prendre un kot à Mons pour réussir ce quadri en beauté -intro à jouer +# Day 1 +## intro à jouer Faire les cartons de différentes cours Calculus --> big carton( encombrant pas possible de tourner) Algo 1 --> pc portable (fragile) Math elem carton avec une inégalité dessus qui change dès qu on tourne la pièce) Objet perso à chacun -Mat --> poids de sport -Eddy --> balle de basket,... -Anthony --> tenue de scout +1. Mat --> poids de sport +2. Eddy --> balle de basket,... +3. Anthony --> tenue de scout -Déménagement histoire : +## Déménagement histoire : Arrivé à l appartement : La pièce est assez petite mais avec assez d'imagination je serai tout mettre (j'aurais aimé déjà être en master pour faire une AI qui me aiderai à ranger tous ça peut-etre que chatgpt pourrait m aider..) -Déménagement à jouer : +## Déménagement à jouer : Galère à tout rangé --> (interaction avec le jouer) --> en repensant c est peut-être pour ça que l ancien propriétaire et partie et que le prix était de si bas Notion de jour donc cours unifs -> pas le temps de ranger dans le WK on doit terminer en semaine -continuité histoire +# Day 2 + +## continuité histoire Après un long mardi terminer par le cours d algo 2 il est tant de ranger le dernier carton dans la buanderie après une 10 minute de marche @@ -38,23 +41,29 @@ j arrive à mon kot mais qlq chose à changer, la couleur de la porte n est plus De plus il faut tirer et plus poussé pour l ouvrir. Après être rentré tous les cartons sont refait et l ordre des pièces à changer -à jouer +## à jouer ----> refaire des niveaux différents pour ranger les cartons (intercation pendant le jeu) --->Hormis la fatigue qui me gagne et se sentiment étrange par rapport à ce kot +--> Hormis la fatigue qui me gagne et se sentiment étrange par rapport à ce kot je defais encore une fois tous mes cartons -(je ne sais pas comment mais tout mes exo en calculus ont été corrigées les cartons sont tous remplie de rouge lol) +(je ne sais pas comment mais tout mes exo en calculus ont été corrigées les cartons sont tous remplie de rouge) Après avoir défait le dernier carton dans le bureau je remarque une Trap mystérieuse mais il est déjà 23h et demain j'ai une longue journée qui m'attend (8-10 et 15h45-17h45) -Day 2 histoire - -Après avoir défait le dernier carton dans le bureau je remarque une Trap mystérieuse mais il est déjà 23h et demain j'ai une longue journée qui m'attend (8-10 et 15h45-17h45) +# Day 3 histoire La nuit passe --> rien ne bouge (Level bonus) (choix entre faire le petit dej ou allez directement en cours) + +## Si choix petit dej + Après un bon petit déj --> puzzle cassé les oeuf au bonne endroit dans la poêle mettre le bacon au bonne endroit + +## si choix rien déjeuner + rien ne se passer (peut avoir de l'importance pour la suite ex : fin pendant la journée donc allez faire des courses idée de niveau de remplir le caddie) + + La journée se termine je croise les doigts pour que tout reste comme avant Puis on ouvre la Trap est... space cat avec qlq level ou reveil devant l examen de calculus \ No newline at end of file diff --git a/JournalDeBord/src/rapports/230323.md b/JournalDeBord/src/rapports/230323.md new file mode 100644 index 0000000..9171595 --- /dev/null +++ b/JournalDeBord/src/rapports/230323.md @@ -0,0 +1,34 @@ +# 23 mars 2023 + +Nous nous sommes rassemblés ce jeudi afin de parler de plusieurs sujets tel que : + +1. L'avancement du travail d'Eddy. +2. Clarifiction sur les tâches. +3. Rassembler notre travail. + +## L'avancement du travail d'Eddy + +Eddy a commencé à travailler avec javaFX afin de modéliser les premiers mouvements/ déplacement sur les pièces dont nous aurons besoins pour la suite du projet. Il va rajouter son travail sur notre git. + +## Clarifiction sur les tâches du projet + +En ceux qui concerne Eddy va continuer de : + - Travailler sur les mouvements des pièces + - Faire l'interface graphique pour le jeu. + +Anthony va : + - Continuer à travailler sur Map + - Travailler sur son Parser + +Pour finir Matteo va : + - S'occuper de faire le menu du jeu + - Faire la musique du jeu + +## Rassembler notre travail + +Après la mise en commun du travaille d'Eddy avec celle d'Anthony deux points important ont été souligné. + +En effet désormais Anthony se consacre sur toutes les propriétés des pièces à l'intérieur du plateau de jeu, tandis que Eddy lui fait en sorte de lier son travail pour les mouvements en dehors du plateau c'est-à-dire la sélection des pièces, la sélections de la texture en bref l'interface graphique. +De plus concernant la position des pièces il a été décidé de se référer au coin en haut à gauche de la matrice une méthode qui pourra nous aider est la méthode Vec2 qui Anthony a rajouté + +En ce qui concerne la création du menu pour Matteo, il faudrait créer une classe select level pour que chaque level contiennent : le parser qui est relié à Shape et à Pièce mais aussi à l'interface graphique. \ No newline at end of file diff --git a/app/src/main/java/school_project/Map.java b/app/src/main/java/school_project/Map.java new file mode 100644 index 0000000..69a99b3 --- /dev/null +++ b/app/src/main/java/school_project/Map.java @@ -0,0 +1,46 @@ +package school_project; + +import java.util.ArrayList; +import java.util.Arrays; + +/** + * Represent the map with its pieces. + * Every piece has a position element that represent its position on the map + */ +public class Map extends Shape{ + private final ArrayList pieces = new ArrayList<>(); + + public Map(boolean[][] matrix) { + super(matrix); + } + + public void addPiece(Piece piece){ + piece.setLinked_map(this); + pieces.add(piece); + } + + /** + * Return a matrix with all used space on the map to see if a piece can fit in a space + * + * @return matrix of boolean with false being the not used space + */ + public boolean[][] getUsedSpace(){ + + // Copy of the map to avoid side effect + boolean[][] used = new boolean[height][width]; + for (int i = 0; i < height; i++) { + used[i] = Arrays.copyOf(matrix[i], width); + } + + for (Piece p : pieces) { + for(int x = 0; x < p.height; x++){ + for(int y = 0; y < p.width; y++){ + if (p.getShape()[x][y]){ + used[p.getPosition().x + x][p.getPosition().y + y] = false; + } + } + } + } + return used; + } +} diff --git a/app/src/main/java/school_project/Piece.java b/app/src/main/java/school_project/Piece.java new file mode 100644 index 0000000..a358dd2 --- /dev/null +++ b/app/src/main/java/school_project/Piece.java @@ -0,0 +1,59 @@ +package school_project; + +/** + * Represent a Piece in the game. + * Every Piece should be contained in a Map Object. + * A piece has a position witch is the position of its top-leftest position in its matrix. + * If the piece is not placed in the Map (in a floating state) the position should be null; + */ +public class Piece extends Shape{ + + private Vec2 Position; + private Map linked_map; + + public Piece() { + super(); + } + + public Piece(boolean[][] matrix) { + super(matrix); + } + + public Vec2 getPosition() { + return Position; + } + + public void setPosition(Vec2 position){ + if (linked_map == null) { + return; + } + + this.Position = position; + } + + /** + * set the map the piece is into the the map argument + * @param map map where to place the piece + */ + public void setLinked_map(Map map){ + this.linked_map = map; + } + + /** + * Rotate the matrix of the piece. Used when the player right click + * + * @param times Set the amount of time the rotation should be executed. Should be set between 1 and 3. + */ + public void RotateRight(int times){ + while(times > 0) { + boolean[][] temp_matrix = new boolean[width][height]; + for (int i = 0; i < width; i++) { + for (int j = 0; j < height; j++) { + temp_matrix[i][j] = matrix[-j+height-1][i]; + } + } + times--; + matrix = temp_matrix; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/school_project/Shape.java b/app/src/main/java/school_project/Shape.java new file mode 100644 index 0000000..eda3a9c --- /dev/null +++ b/app/src/main/java/school_project/Shape.java @@ -0,0 +1,44 @@ +package school_project; + + +/** + * Base class for everything that is a shape kind, like map and pieces + * it contain a matrix of boolean where the shape is defined by the true's + */ +public class Shape { + + protected boolean[][] matrix; + protected int height, width; + + public Shape() { + matrix = new boolean[0][0]; + } + + public Shape(boolean[][] matrix){ + this.setShape(matrix); + } + + public void setShape(boolean[][] matrix) throws IllegalArgumentException{ + height = matrix.length; + width = matrix[0].length; + + for (boolean[] row: matrix){ + if(row.length != width){ + throw new IllegalArgumentException("The argument should be a square matrix"); + } + } + this.matrix = matrix; + } + + public int getHeight() { + return height; + } + + public int getWidth() { + return width; + } + + public boolean[][] getShape() { + return matrix; + } +} \ No newline at end of file diff --git a/app/src/main/java/school_project/Vec2.java b/app/src/main/java/school_project/Vec2.java new file mode 100644 index 0000000..5de0978 --- /dev/null +++ b/app/src/main/java/school_project/Vec2.java @@ -0,0 +1,19 @@ +package school_project; + +/** + * This is used to represent a position/vector/... any ensemble of 2 elements that have to work together in + * a plan. This way we can use some basic operations over them. + */ +public class Vec2 { + public int x, y; + + public Vec2() { + x = 0; + y = 0; + } + + public Vec2(int x, int y ){ + this.x = x; + this.y = y; + } +} diff --git a/app/src/test/java/school_project/MapTest.java b/app/src/test/java/school_project/MapTest.java new file mode 100644 index 0000000..289997b --- /dev/null +++ b/app/src/test/java/school_project/MapTest.java @@ -0,0 +1,35 @@ +package school_project; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class MapTest { + + @Test + void getUsedSpace() { + boolean[][] map_matrix = { + {false, true, true, false}, + {false, true, true, true}, + {true, true, true, false}, + {false, true, true, true} + }; + Map testMap = new Map(map_matrix); + + boolean[][] piece1_matrix = { + {true, true}, + {true, true}, + }; + Piece piece1 = new Piece(piece1_matrix); + testMap.addPiece(piece1); + piece1.setPosition(new Vec2(0,1)); + + boolean[][] result_matrix = { + {false, false, false, false}, + {false, false, false, true}, + {true, true, true, false}, + {false, true, true, true} + }; + assertArrayEquals(result_matrix, testMap.getUsedSpace()); + } +} \ No newline at end of file diff --git a/app/src/test/java/school_project/PieceTest.java b/app/src/test/java/school_project/PieceTest.java new file mode 100644 index 0000000..e3adc2e --- /dev/null +++ b/app/src/test/java/school_project/PieceTest.java @@ -0,0 +1,60 @@ +package school_project; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PieceTest { + + @Test + void rotateRight() { + boolean[][] piece1_matrix = { + {true, false, false}, + {false, true, false}, + {true, true, false}, + }; + + boolean[][] piece1_matrix_result = { + {true, false, true}, + {true, true, false}, + {false, false, false}, + }; + + boolean[][] piece2_matrix = { + {true}, + {false}, + {true}, + }; + + boolean[][] piece2_matrix_result = { + {true, false, true}, + }; + + boolean[][] piece3_matrix_result = { + {false, false, false}, + {false, true, true}, + {true, false, true}, + }; + + Piece piece1 = new Piece(); + piece1.setShape(piece1_matrix); + + Piece piece2 = new Piece(piece2_matrix); + + Piece piece3 = new Piece(piece1_matrix); + + Piece piece4 = new Piece(piece1_matrix); + + piece1.RotateRight(1); + assertArrayEquals(piece1_matrix_result, piece1.getShape()); + + piece2.RotateRight(1); + assertArrayEquals(piece2_matrix_result, piece2.getShape()); + + piece3.RotateRight(3); + assertArrayEquals(piece3_matrix_result, piece3.getShape()); + + piece4.RotateRight(3); + assertNotEquals(piece1_matrix_result, piece4.getShape()); + } +} \ No newline at end of file diff --git a/app/src/test/java/school_project/ShapeTest.java b/app/src/test/java/school_project/ShapeTest.java new file mode 100644 index 0000000..c5e6fd3 --- /dev/null +++ b/app/src/test/java/school_project/ShapeTest.java @@ -0,0 +1,48 @@ +package school_project; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ShapeTest { + + @Test + void setShape() { + boolean[][] matrix_shape1 = { + {true, false}, + {true, true}, + {true, false} + }; + boolean[][] matrix_shape2 = { + {true, false, true}, + {true, true, true}, + {true, false, true}, + }; + boolean[][] matrix_shape3 = { + {true, false, true}, + {true, true} + }; + + boolean[][] matrix_shape4 = { + {true}, + {false}, + {true} + }; + + Shape shape1 = new Shape(); + shape1.setShape(matrix_shape1); + assertEquals(3, shape1.getHeight()); + assertEquals(2, shape1.getWidth()); + + Shape shape2 = new Shape(matrix_shape2); + assertEquals(3, shape2.getHeight()); + assertEquals(3, shape2.getWidth()); + + assertThrows(IllegalArgumentException.class, () -> new Shape(matrix_shape3)); + + Shape shape4 = new Shape(matrix_shape4); + assertEquals(3, shape4.getHeight()); + assertEquals(1, shape4.getWidth()); + + } +} \ No newline at end of file diff --git a/prototypes/interface-menu/BackGround-menu.jpg b/prototypes/interface-menu/BackGround-menu.jpg new file mode 100644 index 0000000..b614a35 Binary files /dev/null and b/prototypes/interface-menu/BackGround-menu.jpg differ diff --git a/prototypes/interface-menu/Background-select-level.jpg b/prototypes/interface-menu/Background-select-level.jpg new file mode 100644 index 0000000..49f7f3f Binary files /dev/null and b/prototypes/interface-menu/Background-select-level.jpg differ diff --git a/prototypes/interface-menu/Road-to-masterU/Level.html b/prototypes/interface-menu/Road-to-masterU/Level.html new file mode 100644 index 0000000..b67c465 --- /dev/null +++ b/prototypes/interface-menu/Road-to-masterU/Level.html @@ -0,0 +1,32 @@ + + + + + Level - Road to masterU + + + +
+
+

Day 1

+ > +
+
+ + + + + + + + + + + +
+
+ + + \ No newline at end of file diff --git a/prototypes/interface-menu/Road-to-masterU/Menu.html b/prototypes/interface-menu/Road-to-masterU/Menu.html new file mode 100644 index 0000000..e1d82a2 --- /dev/null +++ b/prototypes/interface-menu/Road-to-masterU/Menu.html @@ -0,0 +1,23 @@ + + + + + Menu - Road to masterU + + + +
+
+

ROAD TO MASTERU

+
+
+

Play

+

Level

+
+
+ + + \ No newline at end of file diff --git a/prototypes/interface-menu/Road-to-masterU/style-Level.css b/prototypes/interface-menu/Road-to-masterU/style-Level.css new file mode 100644 index 0000000..dfca38c --- /dev/null +++ b/prototypes/interface-menu/Road-to-masterU/style-Level.css @@ -0,0 +1,45 @@ +body{ + background-image: url("../Background-select-level.jpg"); + background-position: right; +} +h1,.lien-icone,.back-to-accueil{ + font-size: 75px; + padding-top: 80px; + color:gold; +} +footer{ + text-align: center; + padding:50px + +} +a{ + text-decoration: none; + color:black; +} +.select-day{ + display: flex; + flex-direction: row; + justify-content: center; + align-items: baseline; + +} +.select-level{ + display:grid; + grid-template-columns: 40px 40px 40px; + grid-gap: 30px; + justify-content: center; +} +.level{ + height: 60px; + border:3px solid black; + +} +.level>a{ + font-size:30px; + display: flex; + justify-content:center; +} +.lien-icone{ + padding-left: 10px; +} + diff --git a/prototypes/interface-menu/Road-to-masterU/style-menu.css b/prototypes/interface-menu/Road-to-masterU/style-menu.css new file mode 100644 index 0000000..0c93908 --- /dev/null +++ b/prototypes/interface-menu/Road-to-masterU/style-menu.css @@ -0,0 +1,27 @@ +body{ + background-image: url("../BackGround-menu.jpg"); + background-position: center; +} +h1{ + font-size: 75px; + padding-top: 80px; + text-decoration: underline; +} +h1,h2{ + text-align: center; + color: gold; +} +h2{ + font-size: 50px; + padding-top: 40px; +} +footer{ + position:absolute; + bottom:0; + padding-bottom: 10px; + right:10px; + +} +a{ + text-decoration: none; +} \ No newline at end of file diff --git a/prototypes/interface-menu/Trophee-pic.jpg b/prototypes/interface-menu/Trophee-pic.jpg new file mode 100644 index 0000000..0f65fc3 Binary files /dev/null and b/prototypes/interface-menu/Trophee-pic.jpg differ