@ -1,5 +1,6 @@
< script >
< script >
import PenduDessin from './PenduDessin.vue'
import PenduDessin from './PenduDessin.vue'
import { REST _API } from "../../../assets/const" ;
export default {
export default {
data ( ) {
data ( ) {
@ -11,64 +12,92 @@ export default{
premierePartie : true , / / n e p a s a f f i c h e r " P e r d u " p o u r c e u x q u i v i e n n e n t d e r e j o i n d r e
premierePartie : true , / / n e p a s a f f i c h e r " P e r d u " p o u r c e u x q u i v i e n n e n t d e r e j o i n d r e
lettresDejaDevine : "" ,
lettresDejaDevine : "" ,
/ / l o c a l u n i q u e m e n t , l e c l i e n t n e s a u r a p a s l e m o t
/ / a r e c u p e r e r a p a r t i r d e l ' a p i ( p r e n d r e n o m e t p r e n o m d ' u n s c i e n t i f i q u e n o u s m e m e )
debug _motADeviner : "einstein" ,
motADeviner : "einstein" ,
debug _nbLettresADeviner : 8 ,
description : "" , / / s ' a f f i c h e e n d e s s o u s d u r e s u l t a t a l a f i n
debug _lettresDejaDevine : "" , / / t o u t e n m i n u s c u l e
api _pagesMaximum : 0 , / / i m p o s s i b l e d e c o n n a i t r e l e n o m b r e d e p a g e a l ' a v a n c e
/ / b l o q u e r l ' i n p u t s i l ' u t i l i s a t e u r m e t u n e l e t t r e d e j a d e v i n é e
regexExceptions : [ / / c a r a c t e r e s q u ' o n n e f e r a p a s d e v i n e r a u j o u e u r
/\W/ , / / c a r a c t e r e s b l a n c
/[^a-z]/ , / / n o n a l p h a b e t i q u e m i n u s c u l e
] ,
lettresANePasFaireDevinerAuJoueur : "" , / / m e m e u t i l i t é q u e l e t t r e s D e j a D e v i n e m a i s n ' e s t p a s v i s i b l e a u j o u e u r
} ;
} ;
} ,
} ,
methods : {
methods : {
creerPartie : function ( ) {
creerPartie : function ( ) {
this . debug _creerPartie ( ) ;
this . premierePartie = false ;
this . partieTerminee = false ;
/ / l ' a p i ( P A T C H d e m a r r e r P a r t i e ) r e t o u r n e r a l e n o m b r e d e l e t t r e s a d e v i n e r a i n s i q u e l e n o m b r e d e v i e s
this . nbLettresADeviner = this . debug _nbLettresADeviner ; / / T O D O u t i l i s e r l ' a p i
this . viesRestantes = 10 ; / / T O D O u t i l i s e r l ' a p i
this . progression = "_" . repeat ( this . nbLettresADeviner ) ;
this . lettresDejaDevine = "" ;
this . lettresDejaDevine = "" ;
/ / a p p e l e r l ' A P I
fetch ( ` ${ REST _API } /scientifiques?page= ` + this . intAleatoire ( this . api _pagesMaximum ) ) . then ( response => {
response . json ( ) . then ( json => {
/ / p r e n d r e l e s c i e n t i f i q u e d e l a r e q u e t e
const arrayScientifique = json . _embedded
const scientifiqueADeviner = arrayScientifique [ this . intAleatoire ( arrayScientifique . length ) ]
/ / p r e n d r e l e m o t a d e v i n e r a p a r t i r d u n o m d u s c i e n t i f i q u e
this . motADeviner = scientifiqueADeviner . nom . toLowerCase ( ) + " " + scientifiqueADeviner . prenom . toLowerCase ( )
this . nbLettresADeviner = this . motADeviner . length
this . description = scientifiqueADeviner . descriptif
this . viesRestantes = 10 ; / / T O D O u t i l i s e r l ' a p i
/ / v e r i f i e r q u e l e m o t a d e v i n e r n e c o n t i e n t p a s d e s l e t t r e s e x e m p t é e s
this . lettresDejaDevine = "" ;
this . lettresANePasFaireDevinerAuJoueur = "" ;
this . motADeviner . split ( "" ) . forEach ( lettre =>
this . regexExceptions . forEach ( regex => regex . test ( lettre ) ? this . lettresANePasFaireDevinerAuJoueur += lettre /* faire jouer la lettre a la place de l'utilisateur */ : null )
)
/ / r a f r a i c h i r l a p r o g r e s s i o n p o u r e n l e v e r l e s l e t t r e s a n e p a s f a i r e d e v i n e r
this . progression = this . afficherProgression ( )
/ / d e m a r r e r l e j e u
this . afficherLeJeu ( )
} )
} )
} ,
afficherLeJeu ( ) {
this . partieTerminee = false ;
this . premierePartie = false ;
} ,
} ,
deviner : function ( event ) {
deviner : function ( event ) {
/ / T O D O r e v o i r c e t r u c
/ / p r e n d r e l a l e t t r e d e p u i s l ' e v e n t
/ / p r e n d r e l a l e t t r e d e p u i s l ' e v e n t
const lettreDevinee = event . data . toLowerCase ( ) ;
const lettreDevinee = event . data . toLowerCase ( ) ;
/ / v i d e r l ' i n p u t
/ / v i d e r l ' i n p u t
event . target . value = "" ;
event . target . value = "" ;
/ / e n v o y e r l e t t r e D e v i n e e a l ' a p i
/ / a j o u t e r l a l e t t r e d a n s l a l i s t e d e s l e t t r e s d e v i n é e s
if ( ! this . lettresDejaDevine . includes ( lettreDevinee ) ) {
this . lettresDejaDevine += lettreDevinee ;
}
/ / c o m p a r e r l a p r o g r e s s i o n
const oldprogression = this . progression ;
const oldprogression = this . progression ;
this . progression = this . debug _letreDevinee ( lettreDevinee ) ;
this . progression = this . afficherProgression( ) ;
/ / / ! \ c o d e t e m p o r a i r e , l o c a l u n i q u e m e n t : T O D O r e m p l a c e r a v e c l ' a p i
if ( oldprogression == this . progression ) {
if ( oldprogression == this . progression ) {
/ / s i l a l e t t r e e s t i n c o r r e c t e
/ / s i on n ' a p a s p r o g r e s s é = l e t t r e i n c o r r e c t e
this . viesRestantes -- ; / / l ' a p i d e v r a i t a u s s i r e t o u r n e r l e n o m b r e d e v i e s r e s t a n t e s
this . viesRestantes -- ; / / l ' a p i d e v r a i t a u s s i r e t o u r n e r l e n o m b r e d e v i e s r e s t a n t e s
if ( this . viesRestantes < 0 ) {
if ( this . viesRestantes < 0 ) {
this . partieTerminee = true
this . partieTerminee = true
this . progression = this . debug _letreDevinee ( lettreDevinee ) ;
this . progression = this . afficherProgression( ) ;
}
}
}
} else if ( ! this . progression . includes ( "_" ) ) {
/ / f i n c o d e t e m p o r a i r e
/ / p l u s d e l e t t r e s a d e v i n e r
this . partieTerminee = true ;
if ( ! this . progression . includes ( "_" ) ) {
/ / p l u s d e l e t t r e s a d e v i n e r
this . partieTerminee = true ;
}
/ / a j o u t e r l a l e t t r e d a n s l a l i s t e d e s l e t t r e s d e v i n é e s
if ( ! this . lettresDejaDevine . includes ( lettreDevinee ) ) {
this . lettresDejaDevine += lettreDevinee ;
}
}
} ,
} ,
debug _letreDevinee : function ( lettre ) {
afficherProgression : function ( ) {
if ( this . viesRestantes < 0 ) {
if ( this . viesRestantes < 0 ) {
return this . debug_ motADeviner; / / p l u s d e v i e s = f i n d e l a p a r t i e , l' a p i r e t o u r n e l e m o t q u ' o n d e v a i t t r o u v e r
return this . motADeviner ; / / p l u s d e v i e s = f i n d e l a p a r t i e , o n r e t o u r n e l e m o t q u ' o n d e v a i t t r o u v e r
}
}
let progression = "" ;
let progression = "" ;
this . debug_ lettresDejaDevine + = lettre ;
const lettresAAfficher = this . lettresDejaDevine + this . lettre sANePasFaireDevinerAuJoueur ;
this . debug_ motADeviner. split ( "" ) . forEach ( w => this . debug _lettresDejaDevine . includes ( w ) ? progression += w : progression += "_" ) ;
this . motADeviner. split ( "" ) . forEach ( w => lettresAAfficher . includes ( w ) ? progression += w : progression += "_" ) ;
return progression ;
return progression ;
} ,
} ,
debug_creerPartie : function ( ) {
intAleatoire: function ( nbPages ) {
this. debug _lettresDejaDevine = "" ;
return Math . floor ( Math . random ( ) * nbPages )
}
}
} ,
} ,
components : { PenduDessin }
components : { PenduDessin }
@ -91,6 +120,7 @@ export default{
< p > Le mot était : < / p >
< p > Le mot était : < / p >
<!-- l ' api devrait retourner le mot entier quand la vie est a 0 -- >
<!-- l ' api devrait retourner le mot entier quand la vie est a 0 -- >
< h2 style = "font-family: monospace" > { { progression } } < / h2 >
< h2 style = "font-family: monospace" > { { progression } } < / h2 >
< p > { { description } } < / p >
< / div >
< / div >
< button class = "btn btn-primary" v -on :click ="creerPartie" > Créer une partie < / button >
< button class = "btn btn-primary" v -on :click ="creerPartie" > Créer une partie < / button >
< / div >
< / div >