diff --git a/build/Jeu.js b/build/Jeu.js index 00c0c4a..e35bd1b 100644 --- a/build/Jeu.js +++ b/build/Jeu.js @@ -9,10 +9,11 @@ class Jeu extends Scene { start() { this.joueur_ = new Joueur(document.createElement("img"), this); this.joueur_.setImage("img/joe.png", 50, 60); - this.joueur_.setX(this.getWidth() / 2 - this.getWidth() / 2); - this.joueur_.setY(this.getHeight() / 2 - this.getHeight() / 2); + this.joueur_.setX(this.zoneDeJeu_.getWidth() / 2 - this.joueur_.getWidth() / 2); + this.joueur_.setY(this.zoneDeJeu_.getHeight() / 2 - this.joueur_.getHeight() / 2); this.appendChild(this.joueur_); this.joueur_.animer(); + this.regles_ = new Regles(document.getElementById("regles"), this); } pause() { } diff --git a/build/Joueur.js b/build/Joueur.js index 2019270..f057e3a 100644 --- a/build/Joueur.js +++ b/build/Joueur.js @@ -10,6 +10,11 @@ class Joueur extends Sprite { this.ecouteurClavier_ = (evt) => this.deplacer(evt); this.ecouteurClavierStop_ = (evt) => this.stopperDeplacement(evt); } + figer() { + window.removeEventListener("keydown", this.ecouteurClavier_); + window.removeEventListener("keyup", this.ecouteurClavierStop_); + clearInterval(this.timerAnimation); + } animer() { window.addEventListener("keydown", this.ecouteurClavier_); window.addEventListener("keyup", this.ecouteurClavierStop_); @@ -59,7 +64,7 @@ class Joueur extends Sprite { deplacer(evt) { this.touchesEnfoncees[evt.key] = true; if (this.timerAnimation === null) { - this.timerAnimation = setInterval(() => this.mettreAJourDeplacement(), 1000 / 120); + this.timerAnimation = setInterval(() => this.mettreAJourDeplacement(), 1000 / 144); } } stopperDeplacement(evt) { diff --git a/build/Regles.js b/build/Regles.js new file mode 100644 index 0000000..67371ef --- /dev/null +++ b/build/Regles.js @@ -0,0 +1,35 @@ +"use strict"; +class Regles extends Sprite { + constructor(element, scene) { + super(element); + this.scene_ = scene; + this.reglesDiv_ = document.getElementById('regles'); + this.fermerImg_ = document.getElementById('fermer'); + this.fermetureMenu_ = document.getElementById('fermetureMenu'); + this.ouvertureMenu_ = document.getElementById('ouvertureMenu'); + this.menu_ = document.getElementById('menu'); + this.clique(); + this.setX(document.documentElement.clientWidth / 2 - this.getWidth() / 2); + this.setY(document.documentElement.clientHeight / 2 - this.getHeight() / 2); + } + clique() { + if (this.fermerImg_) { + this.fermerImg_.addEventListener('click', this.cacher.bind(this)); + this.menu_.addEventListener('click', this.montrer.bind(this)); + } + } + cacher() { + if (this.reglesDiv_) { + this.fermetureMenu_.play(); + this.reglesDiv_.style.display = 'none'; + this.menu_.style.display = 'block'; + } + } + montrer() { + if (this.menu_) { + this.ouvertureMenu_.play(); + this.reglesDiv_.style.display = 'block'; + this.menu_.style.display = 'none'; + } + } +} diff --git a/build/img/Background-scene.png b/build/img/Background-scene.png deleted file mode 100644 index ecd6ac4..0000000 Binary files a/build/img/Background-scene.png and /dev/null differ diff --git a/build/img/background.png b/build/img/background-game.png similarity index 100% rename from build/img/background.png rename to build/img/background-game.png diff --git a/build/img/background-rules.jpg b/build/img/background-rules.jpg new file mode 100644 index 0000000..0574858 Binary files /dev/null and b/build/img/background-rules.jpg differ diff --git a/build/img/fermer.png b/build/img/fermer.png new file mode 100644 index 0000000..db1ef2b Binary files /dev/null and b/build/img/fermer.png differ diff --git a/build/img/logo.png b/build/img/logo.png new file mode 100644 index 0000000..48f1e33 Binary files /dev/null and b/build/img/logo.png differ diff --git a/build/img/menu_regles.png b/build/img/menu_regles.png new file mode 100644 index 0000000..bc73605 Binary files /dev/null and b/build/img/menu_regles.png differ diff --git a/build/index.htm b/build/index.htm index bcc984d..8ea685f 100644 --- a/build/index.htm +++ b/build/index.htm @@ -6,6 +6,7 @@ + @@ -20,9 +21,35 @@ + +
+ + +
+
+ Menu des règles +
+ + bouton fermer +

Bienvenue dans le jardin de Joe !

+

Devenez le jardinier le plus rapide en rammassant le plus de vos récoltes dans un temps imparti !

+ +

Aides

+

Dans ce petit jeu, vous avez 1 minute et 30 secondes
pour rammassez des fruits, des légumes ou des plantes !
+ Soyez rapide sinon ils disparaîtront, vous pourriez même tomber sur de mauvaises surprises...

+ +

Déplacement

+
    +
  • ⇧ : Se diriger vers le haut
  • +
  • ⇨ : Se diriger vers la droite
  • +
  • ⇦ : Se diriger vers la gauche
  • +
  • ⇩ : Se dirigier vers le bas
  • +
+
+ diff --git a/build/jeu.css b/build/jeu.css index 624490e..ac8afa5 100644 --- a/build/jeu.css +++ b/build/jeu.css @@ -1,3 +1,7 @@ + +@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + + body { position: absolute; overflow: hidden; @@ -18,10 +22,68 @@ body { } #jeu { - background-image: url(img/background.png); + background-image: url(img/background-game.png); background-size: cover; } +#regles { + display: block; + z-index: 4; + position: absolute; + box-shadow: 12px 12px 4px rgba(0, 0, 0, 0.664); + padding: 20px; + color: beige; + display: flex; + justify-content: center; + border: 4px solid black; + border-radius: 15px; + flex-direction: column; + background-image: url(img/background-rules.jpg); + background-size: cover; + font-family: "Outfit", sans-serif; + font-weight: 400; +} + +#menu { + display: none; + cursor: pointer; + transform: rotate(0deg); + position: absolute; + right: 20px; + bottom: 20px; + transition: transform; +} + +#menu:hover { + transform: rotate(-5deg); + transition: 0.2s; + +} + +#fermer { + transition: all; + position: absolute; + right: 20px; + top: 20px; + cursor: pointer; +} +#fermer:hover { + width: 55px; + height: 55px; + transition-duration: 0.2s; +} + +#regles ul { + display: flex; + flex-direction: column; + justify-content: center; +} + +#logo { + margin: auto; + padding-top: 10px; +} + #scene.fullscreen { box-shadow: none; } diff --git a/build/sfx/fermerMenu.wav b/build/sfx/fermerMenu.wav new file mode 100644 index 0000000..4675d28 Binary files /dev/null and b/build/sfx/fermerMenu.wav differ diff --git a/build/sfx/ouvrirMenu.wav b/build/sfx/ouvrirMenu.wav new file mode 100644 index 0000000..274e20f Binary files /dev/null and b/build/sfx/ouvrirMenu.wav differ diff --git a/source/Jeu.ts b/source/Jeu.ts index dad77a3..b3fff1f 100644 --- a/source/Jeu.ts +++ b/source/Jeu.ts @@ -7,6 +7,7 @@ class Jeu extends Scene { //----------------------------------------------------------------------------------------Attributs /* Declarer ici les attributs de la scene. */ public joueur_ : Joueur; + public regles_ : Regles; private zoneDeJeu_ : Sprite; @@ -30,11 +31,15 @@ class Jeu extends Scene { this.joueur_ = new Joueur (document.createElement("img"),this); this.joueur_.setImage("img/joe.png",50,60); - this.joueur_.setX(this.getWidth()/2 - this.getWidth()/2); - this.joueur_.setY(this.getHeight()/2 - this.getHeight()/2); + this.joueur_.setX(this.zoneDeJeu_.getWidth()/2 - this.joueur_.getWidth()/2); + this.joueur_.setY(this.zoneDeJeu_.getHeight()/2 - this.joueur_.getHeight()/2); this.appendChild(this.joueur_); this.joueur_.animer(); + //Création des boutons + this.regles_ = new Regles(document.getElementById("regles"), this); + + } //--------------------------------------------------------------------------------------------pause diff --git a/source/Joueur.ts b/source/Joueur.ts index 6f6dd71..8c6661c 100644 --- a/source/Joueur.ts +++ b/source/Joueur.ts @@ -23,6 +23,12 @@ class Joueur extends Sprite { this.ecouteurClavierStop_ = (evt: KeyboardEvent) => this.stopperDeplacement(evt); } + public figer() { + window.removeEventListener("keydown", this.ecouteurClavier_); + window.removeEventListener("keyup", this.ecouteurClavierStop_); + clearInterval(this.timerAnimation); + } + public animer() { window.addEventListener("keydown", this.ecouteurClavier_); window.addEventListener("keyup", this.ecouteurClavierStop_); @@ -98,7 +104,7 @@ class Joueur extends Sprite { public deplacer(evt: KeyboardEvent) { this.touchesEnfoncees[evt.key] = true; if (this.timerAnimation === null) { - this.timerAnimation = setInterval(() => this.mettreAJourDeplacement(), 1000 / 120); + this.timerAnimation = setInterval(() => this.mettreAJourDeplacement(), 1000 / 144); } } diff --git a/source/Regles.ts b/source/Regles.ts new file mode 100644 index 0000000..da87231 --- /dev/null +++ b/source/Regles.ts @@ -0,0 +1,51 @@ +class Regles extends Sprite { + public scene_ : Jeu; + + private reglesDiv_: HTMLElement; + private menu_ : HTMLElement; + private fermerImg_: HTMLElement; + private ouvertureMenu_: HTMLAudioElement; + private fermetureMenu_: HTMLAudioElement; + + + public constructor(element: HTMLElement, scene: Jeu) { + super(element); + this.scene_ = scene; + + this.reglesDiv_ = document.getElementById('regles'); + this.fermerImg_ = document.getElementById('fermer'); + this.fermetureMenu_ = document.getElementById('fermetureMenu') as HTMLAudioElement; + this.ouvertureMenu_ = document.getElementById('ouvertureMenu') as HTMLAudioElement; + + this.menu_ = document.getElementById('menu'); + this.clique(); + + this.setX(document.documentElement.clientWidth /2 - this.getWidth()/2); + this.setY(document.documentElement.clientHeight /2 - this.getHeight()/2); + } + + public clique(): void { + if (this.fermerImg_) { + + this.fermerImg_.addEventListener('click', this.cacher.bind(this)); + this.menu_.addEventListener('click', this.montrer.bind(this)); + } +} + + public cacher(): void { + if (this.reglesDiv_) { + this.fermetureMenu_.play(); + this.reglesDiv_.style.display = 'none'; + this.menu_.style.display = 'block'; + + } + } + + public montrer() { + if (this.menu_) { + this.ouvertureMenu_.play(); + this.reglesDiv_.style.display = 'block' + this.menu_.style.display = 'none'; + } + } +} \ No newline at end of file