Commit b2945208 authored by Gerson Sunyé's avatar Gerson Sunyé
Browse files

Merge of local changes

parents 3484d4ad b1079627
......@@ -9,7 +9,7 @@ L'objectif de ce mini-projet est d'intégrer et adapter tout le travail réalis
## Préparation
1. Créez une fourche (Fork) du project sur votre compte GitLab: [Cliquez ici pour créer le Fork](https://gitlab.univ-nantes.fr/naomod/software-development-course/onlineChess/forks/new) (Éventuellement, Gitlab vous demandera de vous connecter).
1. Créez une divergence (en anglais, *fork*) du projet sur votre compte GitLab: [Cliquez ici pour créer le Fork](https://gitlab.univ-nantes.fr/naomod/software-development-course/onlineChess/forks/new) (Éventuellement, Gitlab vous demandera de vous connecter).
2. Créez et configurez une copie locale du projet. Ouvrez le **Terminal** et exécutez les commandes suivantes:
......@@ -52,16 +52,14 @@ npm install
- `main.ts` : programme principal de création et gestion du serveur web
- `spec` contient les tests unitaires du serveur.
- `node_modules` contient les modules Node.js utilisés dans le projet. Vous ne devez pas modifier le contenu de ce dossier.
- `build` contient le code Javascript généré à partir des sources TypeScript contenus dans `src`. Vous ne devez pas modifier le contenu de ce dossier.
- `package.json` est le fichier de configuration s de **npm**. Vous n'avez pas besoin de le modifier.
- `tsconfig.json` est le fichier de configuration s de **TypeScript**. Vous n'avez pas besoin de le modifier.
- `package.json` est le fichier de configuration de **npm**. Vous n'avez pas besoin de le modifier.
- `tsconfig.json` est le fichier de configuration de **TypeScript**. Vous n'avez pas besoin de le modifier.
## Test et lancement
- Le projet utilise l'outil de construction et de gestion de modules **npm**.
- Pour lancer tous les tests unitaires du projet avec Jasmine, exécutez: `npm test`.
- Pour lancer le serveur en mode développement (recommandé), exécutez: `npm run dev`.
- Pour lancer le serveur en mode normal, exécutez: `npm run serve`.
- Pour lancer le serveur en mode développement, exécutez: `npm run dev`.
- Pour accéder à l'application, ouvrez l'URL suivante: [http://localhost:8080](http://localhost:8080).
- Pour accéder au contenu JSON de l'échiquier en cours, utilisez l'URL suivante: [http://localhost:8080/status.js](http://localhost:8080/status.js).
......@@ -80,9 +78,10 @@ Par exemple:
Le programme principal du serveur (`main.ts`) est chargé de démarrer un mini-serveur web capable de recevoir les différentes requêtes provenant des navigateurs connectés à l'application :
- "/" : distribue le fichier `views/index.ejs`;
- "/ (post)" : reçoit et traite un coup à jouer;
- "/status.js" : génère et distribue l'échiquier en cours au format JSON.
- GET "`/`" : distribue le fichier `views/index.ejs`;
- GET "`/status.js`" : génère et distribue l'échiquier en cours au format JSON.
- POST "`/`" : reçoit et traite un coup à jouer;
Ces trois traitements correspondent aux différents appels à `app.get()` et `app.post()` du programme principal.
......@@ -90,7 +89,7 @@ Ces trois traitements correspondent aux différents appels à `app.get()` et `ap
1. Lorsqu'un utilisateur se connecte à l'application (adresse **"/"**), le serveur distribue alors la page html principale composée d'un échiquier vierge et d'une zone de saisie permettant à l'utilisateur de remplir le coup à jouer.
2. Le navigateur internet récupère immédiatement les informations de la partie en cours présentes à l'adresse `/status.js`et remplit l'échiquier à l'aide d'un script situé dans le fichier `script.js`. Ces deux scripts se trouvent dans le dossier `client`.
2. Le navigateur internet récupère immédiatement les informations de la partie en cours présentes à l'adresse `/status.js` et remplit l'échiquier à l'aide d'un script situé dans le fichier `script.js`. Ces deux scripts se trouvent dans le dossier `client`.
3. Un clic sur le bouton "Envoyer" effectue une requête de type **POST** au à l'adresse **"/"** du serveur, contenant les informations du champs de texte associé.
Le serveur traite alors la requête afin de jouer le coup demandé.
......@@ -120,7 +119,8 @@ Le traitement des déplacements se fait de la façon suivante:
5. Si le mouvement est possible, c'est à dire la fonction `isMovePossible()` retourne `true`, la fonction `processMove()` appelle la fonction `performMove(), qui effectue le déplacement.
Vous devez donc parcourir le module `move-validation` et implémenter les fonctions de validation contenant le commentaire "TODO:".
Vous devez donc parcourir le module `move-validation` et implémenter les fonctions de validation contenant le commentaire "`// TODO:`".
### Tests unitaires
......@@ -131,16 +131,37 @@ Par exemple, pour tester
- valider les mouvements.
- tester
#### Pion
- Test1: XXX
- Test2: XXX
### Rendu
L'ensemble de votre projet doit être archivé au format zip et déposé sur Madoc au format
\begin{center}\verb+NOM1_NOM2_NOM3_NOM4.zip+\end{center} \textbf{avant la date indiquée sur la zone de dépôt}. Chaque fichier supplémentaire ajouté dans le projet doit contenir en entête un \textbf{commentaire} comportant une description du fichier et l'ensemble de vos noms et prénoms. Inspirez-vous des sources fournies dans le projet. Vous pouvez également modifier le fichier \texttt{README} pour y décrire l'organisation de vos modules, les fonctionnalités et les changements apportés dans le projet ainsi que les limites rencontrées.
Vous allez pouvoir effectuer le rendu directement depuis l'interface de Gitlab, en réalisant ce qu'on appelle une **demande de fusion**.
Cela permet d'envoyer tous les changements que vous avez effectué aux propriétaires du dépôt Gitlab d'origine (donc nous !) en quelques clics.
0. Assurez vous d'avoir effectué tous les *commits* et *pushs* nécessaires avec git.
1. Dans le panneau de gauche, cliquez sur "Demandes de fusion".
2. Cliquez sur "Nouvelle demande de fusion".
3. Vérifiez que dans la partie droite on trouve bien `naomod/software-development-course/onlineChess` et `master`.
4. Dans la partie gauche, choisissez `<votre nom d'utilisateur>/onlineChess` (normalement déjà choisi) et également `master`.
5. Cliquez sur "Compare branches and continue".
6. Comme titre pour la demande de fusion, indiquez "Rendu NOM1 NOM2".
7. Enfin, cliquez en bas sur "Submit demande de fusion"
Vous atteignez alors une page qui résume la demande effectuée.
Nous vous recommandons alors de cliquer sur l'onglet "Changes" afin d'avoir accès une une représentation visuelle de tous les changements que vous avez effectué.
Les lignes rouges indiques ce que vous avez retiré, les lignes vertes indiquent ce que vous avez ajouté.
Vérifiez si tout votre rendu est bien présent sous la forme de lignes vertes.
Si vous le souhaitez, vous pouvez ajouter un fichier "`RENDU.md`" à la racine du projet, afin de décrire les spécificités de votre projet (choix techniques, parties non traitées, extensions non demandées, etc.).
### Derniers conseils
- Rappelez-vous que «Une fonction sans test unitaire ne fonctionne pas»!
- Rappelez-vous que « *Une fonction sans test unitaire ne fonctionne pas* »!
- Écrivez les tests unitaires avant ou en même temps que les fonctions. Ne les laissez pas pour la fin, les test unitaires sont très utiles pendant le développement et vous feront gagner du temps.
-
- Faites bon usage de `git`: effectuez des *commits* et des *pushs* régulièrement ! Cela vous permet d'éviter de perdre votre travail, et de mieux collaborer en équipe.
......@@ -49,7 +49,6 @@ describe("Test blackPawnMove()", () => {
it("When in the initial position, pawns cannot move 3 squares forward", () => {
putPiece(chessboard, positionC6, pieces.blackPawn);
let tripleForward: Move = {from: positionA7, to: positionA4, isValid: true}
expect(isValid.blackPawnMove(chessboard, tripleForward)).toBeFalsy();
});
......@@ -174,21 +173,21 @@ describe("Test blackRoockMove()", () => {
});
it("A roock can move horizontally", () => {
// TODO
// TODO:
// Place a roock in E4 in the empty board
// Check the roock can move to H4
// Check the roock can mobe to A4
});
it("A roock can move vertically", () => {
// TODO
// TODO:
// Place a roock in E4 in the empty board
// Check the roock can move to E1
// Check the roock can mobe to E8
});
it("A roock cannot move diagonally", () => {
// TODO
// TODO:
// Place a roock in E4 in the empty board
// Check the roock cannot move to A8
// Check the roock cannot mobe to H7
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment