From a7b7533f4c358605666bce797dc29771681df629 Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Tue, 7 Mar 2023 16:01:04 +0100 Subject: [PATCH 01/29] add viewJS to project --- package.json | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..bf59891 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "hyperset", + "version": "1.0.0", + "description": "Web version of the famous card game \"SET\"", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://codefirst.iut.uca.fr/git/HyperSet/HyperSet.git" + }, + "keywords": [ + "Set!", + "game", + "logic" + ], + "author": "Raphaël Lacote, Aurian Jault, Rémi Arnal, Bastien Jacquelin", + "license": "ISC" +} From bb8a27017b8982b0d2ee6bc60719ef555ea276d9 Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Tue, 7 Mar 2023 16:16:44 +0100 Subject: [PATCH 02/29] edit const --- src/Model/Const.js | 4 ++-- src/Model/Deck.js | 30 ++++++++++++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/Model/Const.js b/src/Model/Const.js index e2a765c..858eec3 100755 --- a/src/Model/Const.js +++ b/src/Model/Const.js @@ -1,8 +1,8 @@ const TAB_COLOR = ['red', 'purple', 'green', 'blue', 'orange']; const TAB_NUMBER = [1, 2, 3, 4, 5]; const TAB_SHAPE = ['diamond', 'oval', 'squiggle', 'star', 'triangle']; -const TAB_FILLING = ['empty', 'stripped', 'fullO', 'pointed', 'squared']; -const TAB_OUTLINE = ['full', 'dot', 'rect', 'spade', 'sharp']; +const TAB_FILLING = ['empty', 'stripped', 'full', 'pointed', 'squared']; +const TAB_OUTLINE = ['continuous', 'dot', 'rect', 'spade', 'sharp']; const ATTRIBUTES = [TAB_COLOR, TAB_NUMBER, TAB_SHAPE, TAB_FILLING, TAB_OUTLINE]; const IDX_ATTRIBUTES = ["color", "number", "shape", "filling", "outline"]; diff --git a/src/Model/Deck.js b/src/Model/Deck.js index bde7dac..107a2ed 100755 --- a/src/Model/Deck.js +++ b/src/Model/Deck.js @@ -33,18 +33,24 @@ class Deck { return; } else { - for (let i = 0; i < nbCards; i++) { - const rand = this.getRandCard(); - this.outputCards.push(this.remainingCards[rand]); - this.remainingCards.splice(rand, 1); - } - let nbSets = setsCounter(this.outputCards, this.nbCards); - console.log("nbSets", nbSets); - console.log("outputCards.length", this.outputCards.length); - console.log("remainingCards.length", this.remainingCards.length); - if (nbSets == 0) { - this.createDeck(this.nbCards) - } + let nbSets = setsCounter(this.outputCards, this.nbCards); + if(this.outputCards.length>=12 && nbSets!=0){ + return + } + else{ + for (let i = 0; i < nbCards; i++) { + const rand = this.getRandCard(); + this.outputCards.push(this.remainingCards[rand]); + this.remainingCards.splice(rand, 1); + } + nbSets = setsCounter(this.outputCards, this.nbCards); + console.log("nbSets", nbSets); + // console.log("outputCards.length", this.outputCards.length); + // console.log("remainingCards.length", this.remainingCards.length); + if (nbSets == 0) { + this.createDeck(this.nbCards) + } + } } } From 6a564d3f605224d0d407f9088817ee35948dc045 Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Tue, 7 Mar 2023 16:31:53 +0100 Subject: [PATCH 03/29] pb trouveelements --- src/Console/main.js | 10 ++++----- test/testsIsHyperset.js | 49 ++++++++++++++--------------------------- 2 files changed, 21 insertions(+), 38 deletions(-) diff --git a/src/Console/main.js b/src/Console/main.js index cb2a25e..11ef6ee 100755 --- a/src/Console/main.js +++ b/src/Console/main.js @@ -37,11 +37,11 @@ console.log("deck.remainingCards",deck.remainingCards) console.log("deck.remainingCards length",deck.remainingCards.length) console.groupEnd(); -let tab=[] -tab.push("yeyee") -console.log(tab) -tab.push("gngngn") -console.log(tab) +// let tab=[] +// tab.push("yeyee") +// console.log(tab) +// tab.push("gngngn") +// console.log(tab) // CREATE HYPERSET function checkList(list) { diff --git a/test/testsIsHyperset.js b/test/testsIsHyperset.js index 9c4d9ca..664ddcc 100755 --- a/test/testsIsHyperset.js +++ b/test/testsIsHyperset.js @@ -1,9 +1,8 @@ -let card1 = new Card4WithoutOutline('red', 3, 'wave', 'full'); -let card2 = new Card4WithoutOutline('red', 3, 'oval', 'empty'); -let card3 = new Card4WithoutOutline('blue', 2, 'oval', 'full'); -let card4 = new Card4WithoutOutline('green', 1, 'wave', 'pointed'); -let card5 = new Card4WithoutOutline('green', 1, 'wave', 'full'); - +let card1 = new Card({'color':'red', 'number':3, 'shape':'wave','filling':'full'}); +let card2 = new Card({'color':'red', 'number':3, 'shape':'oval','filling':'empty'}); +let card3 = new Card({'color':'blue', 'number':2, 'shape':'oval', 'fillin':'full'}); +let card4 = new Card({'color':'green', 'number':1, 'shape':'wave', 'fillin':'pointed'}); +let card5 = new Card({'color':'green', 'number':1, 'shape':'wave', 'fillin':'full'}); deckA = []; deckB = []; deckC = []; @@ -15,16 +14,17 @@ deckC.push(card3, card5); console.assert(isHyperset(deckA, deckB) == true); console.assert(isHyperset(deckA, deckC) == false); -let BcardG1 = new Card5('red', 4, 'oval', 'empty', 'fullO'); -let BcardG2 = new Card5('red', 3, 'oval', 'full', 'fullO'); -let BcardG3 = new Card5('red', 2, 'oval', 'squared', 'fullO'); -let BcardG4 = new Card5('red', 1, 'oval', 'pointed', 'fullO'); +let BcardG1 = new Card({'color':'red', 'number':4, 'shape':'wave','filling':'empty','outline':'continuous'}); +let BcardG2 = new Card({'color':'red', 'number':3, 'shape':'wave','filling':'full','outline':'continuous'}); +let BcardG3 = new Card({'color':'red', 'number':2, 'shape':'wave','filling':'squared','outline':'continuous'}); +let BcardG4 = new Card({'color':'red', 'number':1, 'shape':'wave','filling':'pointed','outline':'continuous'}); + +let BcardD1 = new Card({'color':'green', 'number':3, 'shape':'oval','filling':'pointed','outline':'cloudy'}); +let BcardD2 = new Card({'color':'blue', 'number':2, 'shape':'oval','filling':'squared','outline':'sharpy'}); +let BcardD3 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'full','outline':'hyphen'}); +let BcardD4 = new Card({'color':'orange', 'number':1, 'shape':'oval','filling':'empty','outline':'dotted'}); +let BcardD5 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'stripped','outline':'hyphen'}); -let BcardD1 = new Card5('green', 3, 'oval', 'pointed', 'cloudy'); -let BcardD2 = new Card5('blue', 2, 'oval', 'squared', 'sharpy'); -let BcardD3 = new Card5('purple', 4, 'oval', 'full', 'hyphen'); -let BcardD4 = new Card5('orange', 1, 'oval', 'empty', 'dotted'); -let BcardD5 = new Card5('purple', 4, 'oval', 'stripped', 'hyphen'); BdeckA = []; BdeckB = []; @@ -41,21 +41,4 @@ BdeckE.push(BcardD1, BcardD2, BcardD3, BcardD4); console.assert(isHyperset(BdeckA, BdeckB) == true); console.assert(isHyperset(BdeckA, BdeckC) == false); -console.assert(isHyperset(BdeckD, BdeckE) == true); - - -let Ccard1 = new Card4WithoutShape('blue', 3, 'empty', 'cloudy'); -let Ccard2 = new Card4WithoutShape('red', 3, 'empty', 'cloudy'); -let Ccard3 = new Card4WithoutShape('green', 3, 'empty', 'cloudy'); -let Ccard4 = new Card4WithoutShape('purple', 3, 'empty', 'sharpy'); -let Ccard5 = new Card4WithoutShape('purple', 3, 'empty', 'sharpy'); -let Ccard6 = new Card4WithoutShape('purple', 3, 'empty', 'sharpy'); - -CdeckA = []; -CdeckB = []; - -CdeckA.push(Ccard1, Ccard2, Ccard3); -CdeckB.push(Ccard4, Ccard5, Ccard6); - -console.assert(isHyperset(CdeckA, CdeckB) == false); - +console.assert(isHyperset(BdeckD, BdeckE) == true); \ No newline at end of file From 66498cf2274b0561d2ba15fd2d7a605a6e4cafbe Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Tue, 7 Mar 2023 17:24:37 +0100 Subject: [PATCH 04/29] Les tests remarchent --- src/algo.js | 24 ++++++++++++------------ test/testsIsHyperset.js | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/algo.js b/src/algo.js index e4c38c8..6db803d 100755 --- a/src/algo.js +++ b/src/algo.js @@ -152,33 +152,33 @@ function trouveElements(attributsCartes) { let x; - tabColor.forEach(element => { + TAB_COLOR.forEach(element => { if (element == attributsCartes[0]) { - x = createElements(attributsCartes, tabColor); + x = createElements(attributsCartes, TAB_COLOR); } }); - tabNumber.forEach(element => { + TAB_NUMBER.forEach(element => { if (element == attributsCartes[0]) { - x = createElements(attributsCartes, tabNumber); + x = createElements(attributsCartes, TAB_NUMBER); } }); - tabShape.forEach(element => { + TAB_SHAPE.forEach(element => { if (element == attributsCartes[0]) { - x = createElements(attributsCartes, tabShape); + x = createElements(attributsCartes, TAB_SHAPE); } }); - tabFilling.forEach(element => { + TAB_FILLING.forEach(element => { if (element == attributsCartes[0]) { - x = createElements(attributsCartes, tabFilling); + x = createElements(attributsCartes, TAB_FILLING); } }); - tabOutline.forEach(element => { + TAB_OUTLINE.forEach(element => { if (element == attributsCartes[0]) { - x = createElements(attributsCartes, tabOutline); + x = createElements(attributsCartes, TAB_OUTLINE); } }); @@ -191,6 +191,7 @@ function createCard(cards) { let carteFinale = []; let listeInter = []; + cards.forEach(element => { attributesMatrix.push(element.getAttributes()); }); @@ -201,6 +202,7 @@ function createCard(cards) { listeInter.push(element[i]); }); + //S'ils sont tous égaux if (listeInter.every(element => element === listeInter[0])) { l = [] @@ -218,8 +220,6 @@ function createCard(cards) { } } } - - console.log(carteFinale); return carteFinale; } diff --git a/test/testsIsHyperset.js b/test/testsIsHyperset.js index 664ddcc..60f0202 100755 --- a/test/testsIsHyperset.js +++ b/test/testsIsHyperset.js @@ -1,8 +1,8 @@ -let card1 = new Card({'color':'red', 'number':3, 'shape':'wave','filling':'full'}); +let card1 = new Card({ 'color': 'red', 'number': 3, 'shape':'squiggle','filling':'full'}); let card2 = new Card({'color':'red', 'number':3, 'shape':'oval','filling':'empty'}); let card3 = new Card({'color':'blue', 'number':2, 'shape':'oval', 'fillin':'full'}); -let card4 = new Card({'color':'green', 'number':1, 'shape':'wave', 'fillin':'pointed'}); -let card5 = new Card({'color':'green', 'number':1, 'shape':'wave', 'fillin':'full'}); +let card4 = new Card({ 'color': 'green', 'number': 1, 'shape':'squiggle', 'fillin':'pointed'}); +let card5 = new Card({ 'color': 'green', 'number': 1, 'shape':'squiggle', 'fillin':'full'}); deckA = []; deckB = []; deckC = []; @@ -14,16 +14,16 @@ deckC.push(card3, card5); console.assert(isHyperset(deckA, deckB) == true); console.assert(isHyperset(deckA, deckC) == false); -let BcardG1 = new Card({'color':'red', 'number':4, 'shape':'wave','filling':'empty','outline':'continuous'}); -let BcardG2 = new Card({'color':'red', 'number':3, 'shape':'wave','filling':'full','outline':'continuous'}); -let BcardG3 = new Card({'color':'red', 'number':2, 'shape':'wave','filling':'squared','outline':'continuous'}); -let BcardG4 = new Card({'color':'red', 'number':1, 'shape':'wave','filling':'pointed','outline':'continuous'}); +let BcardG1 = new Card({ 'color': 'red', 'number': 4, 'shape':'diamond','filling':'empty','outline':'continuous'}); +let BcardG2 = new Card({ 'color': 'red', 'number': 3, 'shape':'squiggle','filling':'full','outline':'continuous'}); +let BcardG3 = new Card({ 'color': 'red', 'number': 2, 'shape':'star','filling':'squared','outline':'continuous'}); +let BcardG4 = new Card({ 'color': 'red', 'number': 1, 'shape':'triangle','filling':'pointed','outline':'continuous'}); -let BcardD1 = new Card({'color':'green', 'number':3, 'shape':'oval','filling':'pointed','outline':'cloudy'}); -let BcardD2 = new Card({'color':'blue', 'number':2, 'shape':'oval','filling':'squared','outline':'sharpy'}); -let BcardD3 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'full','outline':'hyphen'}); -let BcardD4 = new Card({'color':'orange', 'number':1, 'shape':'oval','filling':'empty','outline':'dotted'}); -let BcardD5 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'stripped','outline':'hyphen'}); +let BcardD1 = new Card({'color':'green', 'number':3, 'shape':'oval','filling':'pointed','outline':'dot'}); +let BcardD2 = new Card({'color':'blue', 'number':2, 'shape':'oval','filling':'squared','outline':'rect'}); +let BcardD3 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'full','outline':'spade'}); +let BcardD4 = new Card({'color':'orange', 'number':1, 'shape':'oval','filling':'empty','outline':'sharp'}); +let BcardD5 = new Card({'color':'purple', 'number':4, 'shape':'oval','filling':'stripped','outline':'spade'}); BdeckA = []; From 205de31c1ce581f1db63fc9c11d987c2b1ee376f Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Tue, 7 Mar 2023 17:34:38 +0100 Subject: [PATCH 05/29] create game page --- src/Console/main.js | 4 ++-- src/Model/Deck.js | 2 +- views/game.html | 51 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 views/game.html diff --git a/src/Console/main.js b/src/Console/main.js index 11ef6ee..f057c77 100755 --- a/src/Console/main.js +++ b/src/Console/main.js @@ -26,14 +26,14 @@ console.group('Deck'); let deck = new Deck([0,1,2,3],3); console.log("deck.outputCards",deck.outputCards) console.log("deck.outputCards length",deck.outputCards.length) -console.log("deck.remainingCards",deck.remainingCards) +//console.log("deck.remainingCards",deck.remainingCards) console.log("deck.remainingCards length",deck.remainingCards.length) console.log("check set"); deck.checkSet([deck.outputCards[0],deck.outputCards[1],deck.outputCards[2]]) console.log("deck.outputCards",deck.outputCards) console.log("deck.outputCards length",deck.outputCards.length) -console.log("deck.remainingCards",deck.remainingCards) +//console.log("deck.remainingCards",deck.remainingCards) console.log("deck.remainingCards length",deck.remainingCards.length) console.groupEnd(); diff --git a/src/Model/Deck.js b/src/Model/Deck.js index 107a2ed..07aedc6 100755 --- a/src/Model/Deck.js +++ b/src/Model/Deck.js @@ -27,7 +27,7 @@ class Deck { * @brief creation of the deck : 12 random cards lay in front of the playe and remove card from the remainingCard array * @author Bastien Jacquelin */ - createDeck(nbCards) {//toTest⌛ + createDeck(nbCards) {//toTest⌛when more than 12c to d't add other cards if (this.remainingCards.length < this.nbCards) {// no more cards console.log("PLUS DE CARTES"); return; diff --git a/views/game.html b/views/game.html new file mode 100644 index 0000000..f692682 --- /dev/null +++ b/views/game.html @@ -0,0 +1,51 @@ + + + + + + + Game + + + + + + +
+ +
+ +
+

Game - test

+
+
+
+ + + + + + + + + + \ No newline at end of file From b35f4b15dd5eb2e2beae46249552a82e8bc77e09 Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Wed, 8 Mar 2023 12:21:30 +0100 Subject: [PATCH 06/29] Ca marche !!! Vive les pingouins --- src/Console/Console.html | 3 ++- src/algo.js | 43 +++++++++++++++++++++++++++++++++++++ test/testsNumberHyperset.js | 9 ++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/testsNumberHyperset.js diff --git a/src/Console/Console.html b/src/Console/Console.html index 991d7c0..c289909 100755 --- a/src/Console/Console.html +++ b/src/Console/Console.html @@ -19,7 +19,8 @@ - + + \ No newline at end of file diff --git a/src/algo.js b/src/algo.js index 6db803d..bcc7e7b 100755 --- a/src/algo.js +++ b/src/algo.js @@ -244,3 +244,46 @@ function isHyperset(cardsLeft, cardsRight) { } return true; } + +function numberOfHyperset2(deck) { + + let res = 0 + + for (i = 0; i < deck.length - 3; i++) { + for (j = i + 1; j < deck.length - 2; j++) { + for (k = j + 1; k < deck.length - 1; k++) { + for (lapin = k + 1; lapin < deck.length; lapin++) { + console.log(" i,j,k,l :", i, j, k, lapin) + if (isHyperset([deck[i], deck[j]], [deck[k], deck[lapin]])) { + console.log(deck[i],deck[j],deck[k],deck[lapin]) + res += 1 + } + } + } + } + } + return res +} + +function numberOfHyperset3(deck) { + let res = 0 + for (i = 0; i < deck.length - 5; i = i + 1) { + for (j = i + 1; j < deck.length - 4; j = j + 1) { + for (k = j + 1; k < deck.length - 3; k = k + 1) { + for (lolita = k + 1; lolita < deck.length - 2; lolita = lolita + 1) { + for (m = lolita + 1; m < deck.length - 1; m = m + 1) { + for (n = m + 1; n < deck.length; n = n + 1) { + //console.log(i, j, k, lolita, m, n) + if (isHyperset([deck[i], deck[j], deck[k]], [deck[lolita], deck[m], deck[n]])) { + res += 1 + } + } + } + } + } + } + } + return res + +} + diff --git a/test/testsNumberHyperset.js b/test/testsNumberHyperset.js new file mode 100644 index 0000000..4483516 --- /dev/null +++ b/test/testsNumberHyperset.js @@ -0,0 +1,9 @@ +// CREATE DECK + +let deck = new Deck([0, 1, 2, 3], 4); + +// CHECK HYPERSET + +console.log(deck.outputCards) + +console.log(numberOfHyperset3(deck.outputCards)) From e3e5d1320ffa3979194754e06f365002126bd6f7 Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Mon, 13 Mar 2023 11:03:36 +0100 Subject: [PATCH 07/29] =?UTF-8?q?Cr=C3=A9ation=20de=20la=20vue=20tutorial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- views/tutorial.html | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 views/tutorial.html diff --git a/views/tutorial.html b/views/tutorial.html new file mode 100644 index 0000000..377956f --- /dev/null +++ b/views/tutorial.html @@ -0,0 +1,24 @@ + + + + + + + Game + + + + + + +
+ +
+ + \ No newline at end of file From 7ee4d1777675bcb1ff95dcf038b3179fdbaed95a Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Mon, 13 Mar 2023 15:13:52 +0100 Subject: [PATCH 08/29] module card & deck --- src/Model/card-module.js | 16 ++++++++++++++++ src/Model/deck-module.js | 21 +++++++++++++++++++++ views/game.html | 8 +++++++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/Model/card-module.js create mode 100644 src/Model/deck-module.js diff --git a/src/Model/card-module.js b/src/Model/card-module.js new file mode 100644 index 0000000..e3d7a00 --- /dev/null +++ b/src/Model/card-module.js @@ -0,0 +1,16 @@ +export default{ + emits:[], + data: function(){ + return{ + + } + }, + methods:{ + clicked:function () { + + } + }, + template:` +
yess
+ ` +} \ No newline at end of file diff --git a/src/Model/deck-module.js b/src/Model/deck-module.js new file mode 100644 index 0000000..fc39227 --- /dev/null +++ b/src/Model/deck-module.js @@ -0,0 +1,21 @@ +export default{ + emits:[], + data: function(){ + return{ + cards:[] + } + }, + methods:{ + clicked:function () { + + } + }, + template:` +
+
+ {{ n }} + +
+
+ ` +} \ No newline at end of file diff --git a/views/game.html b/views/game.html index f692682..0316ad6 100644 --- a/views/game.html +++ b/views/game.html @@ -23,6 +23,7 @@

Game - test

+
@@ -33,7 +34,11 @@ From ef22a1ab3d78d309f4323757c3b6faf106704dc9 Mon Sep 17 00:00:00 2001 From: Bastien Jacquelin Date: Mon, 13 Mar 2023 15:32:31 +0100 Subject: [PATCH 09/29] =?UTF-8?q?affichage=20des=20diff=C3=A9rentes=20cart?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Model/card-module.js | 2 +- src/Model/deck-module.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Model/card-module.js b/src/Model/card-module.js index e3d7a00..e404580 100644 --- a/src/Model/card-module.js +++ b/src/Model/card-module.js @@ -11,6 +11,6 @@ export default{ } }, template:` -
yess
+
yess
` } \ No newline at end of file diff --git a/src/Model/deck-module.js b/src/Model/deck-module.js index fc39227..992e838 100644 --- a/src/Model/deck-module.js +++ b/src/Model/deck-module.js @@ -11,7 +11,7 @@ export default{ } }, template:` -
+
{{ n }} From 73497d3c5e6c3ff671d62b87472dfc499f2f72bb Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Mon, 13 Mar 2023 16:33:26 +0100 Subject: [PATCH 10/29] Page tutorial avec image --- index.html | 9 ++++++--- resources/logo.png | Bin 0 -> 16928 bytes styles/index.css | 26 +++++++++++++++++++++++++- views/navBar.html | 20 ++++++++++++++++++++ views/tutorial.html | 42 +++++++++++++++++++++++++++++++++--------- 5 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 resources/logo.png create mode 100644 views/navBar.html diff --git a/index.html b/index.html index 04d117e..a5a5084 100755 --- a/index.html +++ b/index.html @@ -10,6 +10,9 @@ + + +
diff --git a/resources/logo.png b/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..46c6bfcb876b6f901fcb66ae73f7b2b103601bb1 GIT binary patch literal 16928 zcmZ8}bwFFsvoCH13dNV9#&F<{(?9QD1%*;uYx~d!o8ZjCS3=D>XytF3tz6Sjqpddl7#x|GS&>O6~rko^9 z%_QkD3=E>7hm5|5qmQ*6*b0W0Tk2nmmW#vI+1-PdTbh=OO9pIZ>EY(=1SO&6j?N%E zYdb5@zrS&DaB;J8aI$joYIAbXa!YXVLob}XY`g$&!++}oZLFOBixDpy2b2MWo}ClO z+1njTs%k?ooE*?%Zb>Kw{Q^x|>WO=#y*th}EVg@C7 zZ53r&E-5GtwsWw8-sG$-9i0DZ0&)X-v)MUAt8;O%asQ`BDO)#ZM`$HkP7WS64mMs+ zPA)c1P9A9G|2MUNYICx2L(8;))<8GA|Iyt)v$pa8+Wb3X1r`|r;GY3u=UvHG_ZWaVXN2^|R+Ew>C**dRNgjT_JrTE*_a z2_*wBD_2iXUXT^QNt4UU(?v!~QPM?02BIKq?d2i|(Nd6-H3Vt$scXC0T7w~) z(1ucc++YE29t}-LSADP@M3a}_K~Dy(K+7d*Bg1Q8FCeWYB_nO4000Omae=gy_uXO^A++F2vW%&RJeT#n#o?-T~+!tLEY9!C~*s z2j=vZ@ldmJm#|Ub19*5T%W5jR=_&94t#$Pwo=Og$+UnlE)@ooEHL$yrtEPgMl)avn zk0L)izi6Z($~St6R4nNDCI0?<;e-*^x}|#Snw&U%W2wa%kgmAaD#X} zpnF%=SHeNrRYJ-apeN-5R&aK9u~+brc9FBU1$rtt>03Gj)OmcIc=Yx8bd(^_>h>By zeF#wB)EO386M^UB*p zzew{+$qL9od1z@msOj(-%5!LQs#^ZD{F*W{idww#x=Qx4wubJ8e6F&Jn)-Y|Zw-Bb zhla13qN|IelZ=`wl!rZ(n~p7%;L!kiL-Zl))?VIjT#6PR-ij9X(k?#QhH}#U_E4RJ zPEAr71hKX7;_v~2pgJqd<*BS8X(+(252Xbp^gV&@E}rgO`XK0v@oCvPd0QxIYH>+$ zyQx@cT4{O7duRci?0wZN^*OW!6s@e4HMKk)?L9y~5=sgHDFrKDD1RF@2Z*PQ2e%5p zhb_bnXeH<3Y|rf_;337KAn)ZU&FACdaR8EWt0KE+q}%l827Qhs#3K$-qFB4t-^I`SBpm|#h)ZH8jJ7HoW2eAqgW zB|U6R@Fy(uky48M6>EJ2{f2t?U>R`t;a)PQGS2V|=DdBg z#t@@aj<0Zw>4spnK4PK;KEd%GnluurUt-J$={RG6=hW(f~lsWCKXXs zU7(?-Zpz}Hm{e*)UsXA?G#gM_Q`*g3&3}swer**`uy1gj358Jt__|cnFYuHO`3XCA zeI2c2TBq|M>ped>D8e~fCzEY|#AwOYNRBaLd|%J{yEgHqRrT~nrAm#Kpg1Uu+{r{U zxE+kcLkS%aow-82R;N@I`Zyn<{iy-#5%;8z|29my5i<*W-&+l7x&HSzA$~%m^Pt{| zkD()^mr0}Zh&m9wIrNiD{MRpysc;5?~c@0Q1GK@?QFe4y;{VS;h zgp9~P`|PH7a;-c@%LLPs4EPAKpqZs*rrqwWn-;y(!+7XTA1lEBCFY!m-Q5Zy69yX> zUa)O+q*&YFU(WFDUVK%n4~^- zU7ppdX2+L(Fp@8aE@TqktLw+AdqCKI+Qe(fL5>G`xhqyJvDx*H@8>1Xb#Da z^7hcZ$%|yrR7<%v?XT+ZngE(#;SwLN_R~+S(i%wLf^$Zn#w&@$>TY(_am($@t+-dsPL|GlI{0 zdOA7}z|)D22BpN}(rINmlJYXl7Vx%8z)A~uqlsS zP#X&Wd47RXm=)uEV?$%TN6bS~ssJ08CU1|=;q8Tw1Hv_$oqahJ{w|wyUeV@rQ>sFX z?G~BtXKRwGKPoIsa+AELzYqFjXY%D^poZWb{e^KtX6tVnGrb4c7pD9GiHNwM>bWJe&x6QThF5ZWdiNM&{ z?2F%Qcr)aRkQgp3knU$3Oi$n9O97t3cg#u%KvU7EL>l+|@$Z%A+nBuHC>Jib6#UTN zQg)dtO|_RTpQ;ZFNB7#8hgXQCM#pBD>5r{(2ot4tgE^dsR`8Anx( zE2|nAl4#~%TB`vo0I!7JtPiolR-h{PXm3DtLC>gUo zT7!DWCNTDQcBW5Oa10Upc=o*jLct+foGBRnAO0QZocbgMk*IJ1DW^l^3KtBt2; z?Xc$^i_4B=fSc#mtWd#-V>qVqyVI>>)0i~<+h_La=_5~ zTn%J{c&if?>*ojO_lR)8-&t{MO@(ur)cQ(2zkWetGaC#EdfP__xAV9wl>t^tADUYE z>eh$%E81#f(jA4DJCNNIQYE>6t=|f^&Ci=+$55n8jkWDkYEV}x``$|GSkWrOV#3E( zl@N|EMOV|SK6my4G|GS=|)Fc!*f9;^LS{dNvG=q`3_5u zMpDt#+l(c7+JJTt>Pg@OBJ%7ke`tAfrMy9fR7<&N0lx4Y#+Oon>=t^K<>t(aR099V z#$vV6Ej!@s{Iu4zwA77nrV24z7!{r9)1izE={ucshMN(Qqh|!Kl!b>J zVwhbS-11az)G)26pN`%VeOhHD)1OZQf{TlA!ekZ9Oxy4-zd7Z&M|gp3D^yhT_iX!H zr3W@@MudPG+kt$dSg!!eNt0SLdtqN1sHNv~#mdm?S696fL2{2z-;8CZQ{quSdV>mDojV8L zmi~1ii_gOL--V)%F1d%y%kzX>xPnblE^4*?}?TKc&$7~fL!)t>67=eWRiuMbH`{Owx^L9e9| zce#btz^@dTZM;0@N1b>$tYx9hEGoANX4+qhWBrRk_!P92SgL@}m$>PD{VVABgCOxr z>nq1COcvAF4g&*HqM}@e_ecXtj&2c{Ep(+Mw>+N4kw-rQM2?!XH-a2U?88Z$nlZ{E z+&p=aJ6iO&kIX(Z3~LPyCy>UHqGA;+rN2f+EpANV=~`n9#i>j&O1jC4CUU=1SAT}9 zexQ3xn8NiHoWCH$4JW!Pros}}*F%=li4iO3Z_};%8zKMsI!|gjU6?MkB^h5i#MWN>nUhk@LgH>xqJ3gZU zqWlO0g`OB&S}4HZvgyrvUyIiPPfstIhQ^$xSD=g`QETRlT=ggXb{1Nxp1920DiFZ-Dvq~pGiP0neEpo9D(IJ39{qpT4p*!0&;?7L!M6B zRO!mX+32^HEJUBw-1qM+O`1G;D5w0`S{lYuiXE9o$FrkGU!LlPL~^)8&>+!?66`B< zPZ%6ae9xtEDM_1;!)*tfn9*ZTF5LUVPIPAC`D>NMS5JX0y*BSA>RqWh0@@2HN=tLb zJGsC@xL+qXC+ixE?*hb_Yr|;F?5$yE^9cF}79(l$B4QY;hvxI+ta zuR~LD@w?G04`Ez1%YS4z3Ct%_tm>sXTXazt9X%YWJ*qIhm0i%3oGGY^-ovlZ5?%g^ zd0wkA`vp8R7bO#hF~lh+(>}t%sZRQabH7;F8<%}ze`FF9`uoLbI`EP3B*ShSAODk< zNr|M07Pij9ynTMT0i4PNuC|_;w84riE&=%t4UM+q8vN+6wZON(RkIb>CGf%>dLL%O ztI?A!2VXmB;Eg70DQX{^dH=-cl!tJ_o77pf5f7H>XPa=&2)1~K6~&=8k#9xJ%)D&p zJR(b)nYjqvM}3OL+AOA{t8gEqK4;OfeyCsyM){MN2zR~oxZWnY-Z2!KyLrLDXfW0m z_)<}PGNRVP7}&+~M+Ly2uAhlj!ydvm8t}U8{o-d^c3POy%pTQu7NzQP;9xl?TT`6Q zQJ9@>`+9zFTVe`(V)Pu?#pC0AE-qjDgBUZ|k zmu~xU{o%4Li0oi12xBtr3dG@mXGsWW)BF^ThINHz0lnkq^%+u3?iSlei|A%}X$$P{i z-?0%DeVn63Jzv#d_;N;0W_V&_LLlfh=kK~^(uAGsTLzI#o0%g~v$VU%kP8}5iR{k> z8+upvT{=Ou$3(b1(HY6N8aSv_(L;d>zKnF4Y9xLhPp8O7T?|Ox3yOCvbf`X~Y*N|h z78cQ$mpdAh$8#96E~(LA$2820OCCP=n~W7PTO@u?dh3Ij6D}}+8$!+o(hq&LJ>H%Z zONaSnB8$Il3z5g{beY}`LLMUB?;amAwrd<)%14t`FdkR)M7vP_{^tGuLqQo(ZTGRi z!rlRsJg+$cXExKoX-Mv3ps=nG>-^j-V_)ubyTxv6=FwuDsBw8B3tgrSvyq3t2deeZ zU1-M(y_ZZ8nz_sLeN=f z6K0plpt#nH4pLeEoukXc2R%ExubJA758VBV>s#Z0x0ui-Mb~Eilhq1*20K}<#a_hEr_vG?m;-4S zq)*f(n+Ggd;xGN;uGt;ml|r${(Rd#g%Yza7kwM&-*nMm9r?k6w{pW~E-UoBX4ma%Y za+pe@`Ant_HKj<#bZ^9?G0yVxMA0#!1Mjy~5+__Wdbn>Shdk0ZMLxM2FadI35vm=Z zfsWc+WVd&oCRJv?gDcZAAOci$hDJ8bP2M;wPKE(b0)IA0L+UN}KUxefvHM;VqWXCi zu`uJXNl}}Vtba!q*%kW3hUk3;<8`*o+?@l?2G4X`8)MRcb9o{9(hWHOZKDY!PIJLU zo!Xu06Zli@Yd4aaEs{KeMW)J1@x(O=+LYT-l_ zx5MFTLFu%W+uH_l4=MsRX0I^^J}s9x{#fN?b~x-4>e-f2p5PQ}a>zUh_I{d+Agx zUhl;|j;6qjX9G3#>C|GKf8XIH(e_K~rM=@*sw8Gisf5D`O+Hb$3Y&r|m4a?=F49mh z8;1jJ#_nazv%gyk^Tmz$nMh<`Qj=Jp6vZW7Trbgp2oM4cBmq`HHCS@OH(88e?5KA z`wM$*v_b)*%&u;v5fT>Q7w>yU?$%*TKCMBQa)X1D;K7NRDLaUTP7W)jho|C_k%A~K zjqAc@%mMkU40SD3!uOnaSH^fvpAxeSsIMz@gpH}G6*^RwHX?1bSH$4GyN~>;w@DjC zBTe1TPB@R3-Dsn|X+d+FSG0#138~a|Ih#c!Zoei^pK~^**AuMloy3yHj3|X|%+1Tp z?hcbtSgPU8uGHftrp%i11OCqOCe3)LwkW*eDQH$__}Tgmzi*Bb1s^H#VeDS8S;hhm z8BqJ1D)Z;(3aG_syJFp*8?4c&ui1g^y*<_Dt#%P;YjsXAlI3M1_!5!>G=I9&H6Sao zudEopF+Mmqav=hcet9t)NJ)^Z`Em025aPZoOD!=@_Y{uUdi8R?S9L*j)$MgR16zzw z*Ehr|Z4qlRC}gRf{N;y8(}1-5zEN*0Y9V%xhE79@jddaov;T8^=V)v3!$~)fP}aJk zZfa`cp}@Ph$9i$vT*7F!Wtx@JN5luArkB&v!jFnQcT?CA1@CMKFB}Y^f0|JU4P9oqTDMhh>P>sL<&<|+e0A$Su=eGTNI*_ zj_)k#HdNPCRD+LgR1+#Q61w2qGVMs1F3?ka_qp1-nl3hwKLIt=E$zS5(2d|@7Yy*6xu zZTSLe&y?4<&6$kQ+tqBYW@v*W-isA$Rz5aBEp9!Z95Q3nphttw-hKjKY#X0*Jaa~K z8bN^gC}kVJ$VUYN_WTxAc_-G1&d&XKSyvr};e$@lwi@;GlQb(ihYq8ix)V*_K=r&5 zipM#-`^DF1VC-B(waY!0h#HJVp}<;3Ur$b`vM<-|_?^ewh5S0fJE1q2Yw)0sWhwCQ zX}--?kDMqTVOuku!nd(7^pwPSj3oc|)pUI_)wgT;{&G!FreUH^MNKtALhtkzEqbZ& zik9zzh@KpKk8W96e3glvqJ{(yT@BcPfIZ$wRz!b{)s_CPCd83?`=uRuKbg*SxxUeSTw|+}E+c9PQ->wLreLf zN&06K3De``%(L;=gKJmuEVNH_ynb+nHKmZmzE#w74a#Cs~BGfUNKD?PjTe1>m; zYM(L%i+W_rg}{L7I2CW3DpAF!qS2zNHU8Ia?^(ULirR{3 zc;|=~21ZyP9+Er}MMjvbzZ@l429OdE7rK!W^|BFh-_N=o9YZ1z^stK&Ro{_cUZmti zbek1|-9&R!Qqz(uJXT`TC7HXQjr=~LIMd&%n2H4Ab?WB^{st>LhNN7u!13_ZIJRwZ zjA~?QKlLt&8bO~!?;Sj@t*)MiLFkjh!=BfTt0JZS$w_akuZ-wNM~!w9nZ#-y-tf+6 z1{GC0cCm4z9z|TntysDke%-5KL})?4cTC&^v=S~iXO*MyozX*x*ekd{Uo0Gko7`>$e`4(5hI8`iMlA% z0glT?M3&>fIcuFTB^91QWk zprG_3_%2BaVdHK}nv9KI>@&~5%#236hNC_GZGu8o)cZbdBfZe{FNlf+=4OSG8yv@y zy7}nSI@;xd`H@M{aqzpXD{fM?u+Tf`f@@q-AMf<_mQNU`C^j_2`*ULIu#fJ1 z;QfGqEgC+o2!NxigcSTuz0G4vU-z7@^w}C8_+4VX74-h+0IZNVm$E_hh?nP;KMHf@ zHm^NTzhH&o2~DnWNURaxjQf)518!ObIP&fsSYhKsaaw69T)JnSgb+9MHRSh3$hfkC zB6A)30LW4g@G$sAgPCLo@Ab!}l$5`uV8BOCrIPCjK_U33zwo)E6SBrZ0CiZ)?Buz@}RGw0_9lcH>r?Q|k2!k|J`He@Ri1jKG%7M4}pINwXbQmcHB_py7C? z!kdIhfRy-gv^&mU%H|)RFk~4`mOL=1ivhj>&Hw2RduJ)6UwPC_f_o(r2;5pB&dr9P zqV8Ft>~5|QYc4U+F*r;W+B}*&?E0H1XYEZ4OD5{Ho+m4q~?W`Axb3`^EY9D>!^ap?Ic#IL{FwcCDS+YkA+- z#z9o2e4GNpxD)J8A;0?sZN;#V3*bl}f z+Y!q?VgAZ8d`tc_AVHV?nfUxu29fw)1-0_`Y;I zPl&+7Z(d(*d-%bfdj=e!qtH&B&+n0aZ{g^aCeQ@q6Xl-Y$?ol z{jJ{KH>ht`&s>A1slpIAE*A%{mh7CA*7oQGm35QwLz}S?I+dzSvp@iZe%ix3mu-pR zX0K|Z^ULJ;EiT=4#lWa8s&hb)|Ghs@sR z?DI2GDC5#30JofbV8vb#NCgU|2QpDtP!JrLnd0l%@ymz4BvRg-!3&NefM4gN-Nwr7 zKhY49hr5yxpIBdw=A z)D2NWP?1U_g|e!tQ76%7HYc+5Y(lXB*AE>9Rm=xd>*{UXAM@yCA6gQA(S5}KOiqr6 zbgRh<)+CZOn@GtYm}%VClSXK5cGcCtsltj^KX26p- zP?@R;`oKgz-Sw`HWv!c5V2i501sKpdk<`J!klOx}3*dbbUzuU&$Ic~Q(L!YT^}ay` zD?CvJm%_G)y=P*2>st-b7$qEsKKQE`5}QdPhEkhDGfV?Ep$;BFLV0-u+h9VeneV{? z=*ZdDR-D71MtOa01cR0uks%Wt8L7@)H#zy>{p@y@M`&P8 zI}r5;X10^ROXjutY^M00Qb|Ehdz zs8ar3r}q|}VZS;j^woo-{{C*}T8z-$%V7y~xgGC_A?u|I+}n)RQ2%wcLFN6Z{R-QW zyQkN1Sqs!HoxDXJ3Ri7CiAzL>qmhJn2VKni14BN3(r}eBZ(g1@DP$AYYImZ_w?)AG z4x>rV#M<2DDI0gTU_q}qPXDFw3g6NN)PI4c<~+ z6Yl6pzEA|wDwA^Mq+{75BqQvCu_^`w@upk@oBLU%In3TJ4gb0L{G1|V3+E%#hP-Hu zQF&UO)hn3gMIQ$U^k|w59=DbTB-|X46_Y*5i5|}Ul;*;uITcpyCvD0hf2@zmco}cJ zX<-=XDQs`~u$60!9+bv$ws8h;Qp2fRt2@oskr97>TZi(+q+MJ}@72=hG48bZDNe`S z28Aj@YA!fIbU2P%a^(VyVP_*Mw6{`<9dj=gAce~_W@hIq{K_ZHKJl4A3?*&q6gZcL z`8_aBseelG#%RS9@p&iFbOqd-$2XWB1?mU&z~0fN3Tf(o)GU+pR#gyeG0~4w|5`u2 zI4xtsiVW-Ic)7=k3;>{QXGPb5(cW97<)}EZuBdzAPAEKu2TaL&e>{88*it}SV?XO^ zK{d>LbZNYXti-$@60m%>{TNFqp)o{^Q)B_s3XETjpgCTqsJ@<@fV#zb`0b$yMr5;f zT*Ys0*BXnCq(PTLpVnj-=KK%8;``)UL{}RfZ75nFr1S|k326@)$7JjbJ&AL$RD^#f zPfK!n4u5GuL|gs4CE|*Bo<_TsXM#kaq_#}_?!@k6kRI~8Z$eZ%r~x4A$d+4mVbM*F zxGNBIWRDusZy=7tFh?5^#2V)>HPli5tt1KZr~d+7u)}9`T4tmO%cEIMQDp#LB<;NB;c!NhZ&(K3>^lGy7)Vl>6QC{0-tamSoG#FE%T1i@Z6 z)eD2W($tt5*2nPFh3d`mXiCjTF>h{#M?ooS^43cY;3WE@T<(&@GYek?n$N-V+q zU(m~SttEOvo>mtCmuPE70D~IE{Q9XequN3O?y?U#xUG#LlG!ou!`4dTdvfU?oBI0A z&T6K?We&{KYasw}68vn)6TaP})xqvNi9HnCtV||Z_!P=4ThFJ(wQilgyt!^&ACz#h zR~Ud3f@*HDt8ub;OZMqfJYmPXOu_cORE@3C=s`>_IS&&@*2Kv?snrE$7b1Mb!#=4a zJ=K(9q+rW?;NR@6(kj5|%3xlgi>U*pm|0T;9xe=$M-C~Te9P=S?sZock3fd92XM1J zPVx$*X!(D^(1W%)p1h?kCLT2jy5%Rj6(WPG&cDZ|j}wZU>DU_`F^RO8gyM7B8ZayN z{~O%E*`37NM@=aCNFI<(bMc0cT_$jNlsm7BD>!S%fu+AevvM{~XT1y8{`|&{b~~l1 zfBmBsKUwUsqzU)3CTUA&baG`WzurMo3a58%TsorFEhnrZKgt4ldF17?O7UF!4Wj#q zk=s4quvt+S4U%edCZPWKQk3EF<;2cG{qNlZZpAlMSocFXK4*ZA=3vmbsQ(YWG^T0v zrD{}{7Jlj!A8Gf4Vp@jF{wJ+D*AyC(4Bv_^@)wZ~uQe=QGYLHfag&ecVD$B_cb5afZAv3xE>G)hTE#r_v|*{^7!35lXtqu5lvvI4Wr ze)c5epfnUUWC370V>I6ooEdEi=B-{0p$mo#kOUkh`)Ol6LUtO9JMgZdR^;w;6CI`QyhBu{VUy zvOBHT8 zlwJolb42#&M|UHyFx9_+x3Z`NC+%(@n-xc-eO$k4p#K2pv*da~#N#x`c|@ zz$Y`J9*~yi6}Sm75fgp!3j7I)`<`(&Bju~JWgvwL!a1G2u6o@yKiKUzd>IoAa6AlW z^WtfYYvTwaVWq@1U5eqaB_f8)3!tlP!I;;gT0wEl><}{ox_z+oV7ay-f!%HSjfoW9m5LJEgs-*lev{KdcN*uXG~S)881~7WYFMMphsZZIVh=$*`6mAJdJS zftn*~gleJ1L>xH%Y;J0D+0Eu8P0lv1R5^P|Sy{T^1H+972xa9bPDGpp6?Qlc`~2Ck ztYK32zhnmsT57(; zktnb>U8D}0&0h?`eDeyuQ#Dl}S%c>ERD<7Ml{9Jzl>x5r-~C^-V!27$nm~iT`>6@? z*lZwY9ca0{kOJKUq=1ul@(ASpGLsS$+oNjteNtC|_Z6&T+5gy)3u}u$8pvP_a61 z;a7w0>~L+X3qd%4pLGs2Fpr5Qt;qr`Re9F9*BoB<*w4Iaeze*Q@k)sm(`Gg#;nX>k zPfKjV{9sZAaPHL}&L7}}g#TI2UZnxBhJe%eE`IJT(u$hCBFmXe1k`0+?ZQ$e-gZLV zYMds*zzAr~czE*51TpiLawGAOJJ^p_aP)6>RBcxCJY1j6?@lRk*c03u@a-8v)R&yG$GKh3*Gw^+j#f`80R)2z3c(#6!~3#Yxen>p z@&Hb20lnJz;<;Z}!zkmz@5YdJXq@^gch_{SY4)`*f>s+{QZ?44=Uu}v z<*U|BUCYCq@^0FW3Lt9phK#MlgTm>n>dp6LrOe1+XPq40chfVl-S?81<*dPA1VNnv z8IXNNRg7!#aawMh0MR1}F)=g{f{No!e9bt<$&#$&Xb0-w!wf+Z6ddASBwbjTD`xW* zz@`h)Ux^f;zFC68k-=|ABbGF0D{L{M7v*>+#Z~ zmwG128V2TNH;sS4hWPh2+*RoPcXSd=&tC}*Z9%NL;GbH(g@HW?Z4ZAQAnP`6SuE>q z)D2W4lc~UiCYXkj=NrBce}9KSP8aKLucRI)PJLc4DUGQj`YCyok*2lF(3Ai$-0*l;gLteMAurREjj09+5H_*&ZP^D`wD=(*I zeVXX>*N&9XEE`Q!K}el=o<{V?ITauv0H^tRW^qX1CV{Rj7?D0PtfG(TrY3~^?COxv zkHNw$!4Dg_6Y9=>`a8mb97YnSw1;xEvMi5E(I3+Y^5YeU`n*L9_`of5C~u-}GFq?u z1T&*vXX(kITd~7*Rn@dFE4eQZ$fO-!@H^5>$8taYlm&w@RYNyJ&7r{ndpC@T;)z+a zFSKh8glc#18Ub7zN%fCq#(gGQn$pZ9J8sk|Np9SfMvuoy@{t?xmZId(lQ{*B6e8Jp z12XboVx%P8xQ=1X*Qmn+xu!SZlv*B9gji6-H~}2%-Yda&ZYC;^_b_8=@H;!2vH8(S ztYWXCAMVaR)ioq~;PU>uDLL}*mwA_zG?HIQ%F3D`7hISG9Nq|BLZ}1z!B5x)R?mlJ z-`kjx?yZuH*=wMW=VD-WozH!Dw4grzpCFN;+ z$8FV)ihjhRj7X|K3RzY*kw$^Qo{3jg$B1X*my+=`T4c;fT>w>Z<nf+CM5 zBkG+eo8pJUKTyYm1so)Ij)xN(&ZR*|teK5g2SZZ97lUi|rWbx=k7_u|zXj!$QZ)=( z&?%hgTAfnr0HGtgCYs8hxrRGka$`SQoSxDHza6os2EGszb%aIs(ndm0I|1;IBq=3` zso=PLzykZQ_RzNZqTZ0tiShB4Z)8>RPk3+1Phr&k>J7Byg27>3^>x?RVU~wA>Pv~o zt#XoBAZA@H0|nXr(RO#_e~yz+81X7tInB_#^)EI3KLU{>?h%k{;?k|C#`v-1h^U&A zBO(x*iDX-{9rQ;2s2lnU^CKaBvazF;pied`<`Gg#M$YeyT{krJxYVnWtZki4td6RW zyz|_4YCHiBI>O2np2YTSD3b6^)=IbnmYB z?XfM~P5OUbRxUIndfZ)MTbz;GJsk>JY2#ThCLOPh2N5IIxrh~?85oG1l$msrQ)Qi4 zPbp}o+)H`%+j&;aQo)I8$p7(S-;!+z(t*Bf3&hi@BA{^hsfhwHS4JBfppmnkBIG^4 z3@af8Cl{Kb=n>k+ix(x+Lc(SzsoX=4YFv-2{zR2%JM43k-nm(k9H{bt>2BGp=l1%I z5cr77ACL(P!a+;8JT;|xZTZSmOEqcDdP_a&7RLN_Y#N9qEe*#*GgcMBssuPL&D(oOHlAY$Xhf)|+>K2{57vMqr|YjgJS81A;3s^SObm(7M^88k<)4BE z?i4cvv3H0V9`qYVP%N7+D7wpU)fCJ~lNmDI6rzUr4@Pi;<$bocAzm>EsOmV($4F?jb_vXrhjcoC9!k zRyMf9tb-T$p=@w^~yJcBzrG z%t9%IWCg3PYM}@28;Reo+Q;Qjw4twOESG0jH{VO*L=nHY!$Bi$STn6B0g4n^-vjE! zvNEzr>>Ov;pI0K)52nb)EM8X1vVJS3HsKoIB%0beL=5W3oh<*&Nu^DqgI!!Kq^MD* zBq=~XF7I-FulWTarFK5e!G%nET3!wMqQ3eJ&DmZ(Ssj`hf6(CWEjI}*j6&zj;)`)} z=8ghem@E_0Bu_@_{aALSx$SKah}|8ceuVO_O^ZujEl@oiSKcM+f81Lf$kT`1#2 zYXU~WC0BcD4H+b=kZY!y%~aaTfRV%`=COQ2IZ8DK`HRA+${XaZi8njMRKl6@p$}PH z2Jv$DYwZh8|1jO+nbo?yn%Znx1~f-@car)PK*E=p5u0zoyqiw8BZ(4(>Hc2(31FXF zPjr!T$WR|n$^ql^2Ze&HedKEah+4an0K3hdVENHApGah6;M>-BRm0;(>;&4ODoCm^ zaq(v9eiY7=dQ|O!>7f2{ocCOVBqUBAEp&k#0ul$Vj;sgU;Br_qiDsd+Jd$ zI^yDPw}csK0&1a7aW|f3vxMZVP0M&a^_^n2(AW>`z82?-0a$<}kUBF`E!f%XUI(AV zolCFfSL5=}f-?wa)`09|#_}h7ne&p>%>&r=(4HIq3TePq zB&|FH3 zlI~7_lrt@d%O@{3Ts)p+x}!O@JZZ@@GQyh&5QDoTyi~bS1p^x#&_X9Z8(m`FW%i(~6Dd0%ydI5zI0TS}o;Al$jrHy(fHIXa!;$mW3OVlO0G>1M_eOEDg zLRl_<7IuhND@zM)%Flc^y;`^!{EeM#!To{6IM`jPvsF(VI@RpY^_E2W7`#l$ zRv-%33nyF=i1MbP;rEUnEtkocClH~4lpf!A=`X>#aTvUc91>{Q?=06^CbDl1zcqp^ zdxKE|{E_;{PU*pGi~8#zBwMB~G-z%V6>!R_tgj2rY;jmZ=m%9ZbIffu>%ERD%e z)mK>km3-FO6glC0eBH1&3WjBTDQ-n#-ur)(1&0*m%RnQtlr7hhAE2)`#nf9;XU*we zs|eehc2bx?(0;$X+w~#?B}#gJ{0K3(^fIw{*Je3n3e9)b2!oyt3Av0V#l(UL3A2BU zBx#nESVTT*mTPF4VtSg4G{P#-W-EkCNsg);la52vl9`kMbQrNmy4UQ|G8nykBj|In zI&$_1Enrv+%l9s-Im8S#V>MvSB6%}JU+GbbPjOp8L(gscFnvh6*P& zg$eUshf#+Yb)8+(A3DNW-htFo;*jIH7?+Dpr(Y)LDl=z*MEg3%M7d4X7N-s5)1^jc zQknEwrqB8_|CQr=bxy4WFvR|*%is1RBO|W&Fps3chTp!vM4Q-E_UWjIYVQE>y|CT} zpg2>iMhN+=rMDHSkTkzyr1pH5 zR21?0GGolDk{r>1%ZigqDXq9-7RU(i@`0AN(X_|YKaB>OKY%zm%BCple|kD4Yp{aV zszkGmEkWrPcku?AGe*koH)4l)z literal 0 HcmV?d00001 diff --git a/styles/index.css b/styles/index.css index 6e5be25..241f9d6 100755 --- a/styles/index.css +++ b/styles/index.css @@ -107,4 +107,28 @@ h1 { display: flex; flex-direction: column; margin-top: auto; -} \ No newline at end of file +} + +#tuto-block { + height: 86.7vh; + background-color: white; + border: 0.5rem solid black; +} + +#p-block { + height: 75%; + width: 75%; + position: absolute; + top: 55%; + left: 50%; + transform: translate(-50%, -50%); + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; +} + +#picture-logo { + display: block; + margin: auto; +} diff --git a/views/navBar.html b/views/navBar.html new file mode 100644 index 0000000..903f47c --- /dev/null +++ b/views/navBar.html @@ -0,0 +1,20 @@ + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/views/tutorial.html b/views/tutorial.html index 377956f..65682cd 100644 --- a/views/tutorial.html +++ b/views/tutorial.html @@ -3,22 +3,46 @@ - - Game + + Tutorial - - + +
+ +
+
+

+

+ Cette application web vous permet de joueur au célèbre jeu Set.
+ Votre but est d'engendrer un maximum de points avant la fin du temps imparti, + pour cela, vous devez réunir des ensembles de 3 cartes.
+ Un ensemble est constitué de trois cartes où chaque caractéristique est soit identique, soit différente pour chacune des cartes.
+ Par exemple, un ensemble pourrait être composé d'une carte rouge pleine en forme de losange avec un remplissage rayé, + une carte verte vide en forme d'ovale avec un remplissage plein et une carte violette pleine en forme de vague avec un remplissage vide.
+ A vous de jouer !!! +

+
+
+ + + + + \ No newline at end of file From 1f1e0a1aaa5cfe5773a6e6ce250c2600f337fa1a Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Mon, 13 Mar 2023 16:40:31 +0100 Subject: [PATCH 11/29] =?UTF-8?q?Pages=20termin=C3=A9=20(enfin=20normaleme?= =?UTF-8?q?nt)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- styles/index.css | 8 +++++++- views/tutorial.html | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/styles/index.css b/styles/index.css index 241f9d6..e728d40 100755 --- a/styles/index.css +++ b/styles/index.css @@ -130,5 +130,11 @@ h1 { #picture-logo { display: block; - margin: auto; + margin: 0 auto; +} + +#phrase-finale{ + font-size:18pt; + color:red; + font-family:'Comic Sans MS'; } diff --git a/views/tutorial.html b/views/tutorial.html index 65682cd..27b3708 100644 --- a/views/tutorial.html +++ b/views/tutorial.html @@ -34,8 +34,13 @@ Votre but est d'engendrer un maximum de points avant la fin du temps imparti, pour cela, vous devez réunir des ensembles de 3 cartes.
Un ensemble est constitué de trois cartes où chaque caractéristique est soit identique, soit différente pour chacune des cartes.
- Par exemple, un ensemble pourrait être composé d'une carte rouge pleine en forme de losange avec un remplissage rayé, + Par exemple, un ensemble pourrait être composé d'une carte rouge pleine en forme de losange avec un remplissage rayé,
une carte verte vide en forme d'ovale avec un remplissage plein et une carte violette pleine en forme de vague avec un remplissage vide.
+ Vous pourrez jouer en solo ou en multijoueur ou vous devez être plus rapide que vos adversaire
+ De nombreuses variantes sont disponibles et vous pourrez modifier vos attributs, le nombre de cartes...
+ Pour une première partie nous vous conseillons la version du jeu Set en 3*4

+

+

A vous de jouer !!!

From cc7ccb16a25fb82562dbd1207897d2754adc37d1 Mon Sep 17 00:00:00 2001 From: Raphael LACOTE Date: Mon, 13 Mar 2023 16:52:47 +0100 Subject: [PATCH 12/29] =?UTF-8?q?Supression=20d'=C3=A9l=C3=A9ments=20inuti?= =?UTF-8?q?les?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 -- views/navBar.html | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index a5a5084..0d06fe3 100755 --- a/index.html +++ b/index.html @@ -11,8 +11,6 @@ - -