- Le mini-projet sera à faire en binôme ou en monôme.
- Il présentera une page html proposant 4 rangées de 5 cartes retournées.
On pourra cliquer sur les images pour faire apparaître la figure qu’elles cachent. - Si deux cartes identiques sont retournées successivement, elles restent retournées.
- Le jeu est fini lorsque toutes les cartes sont retournées.
Barème :
– une page html et une page css présentant le jeu : 5 points,
– un fichier js permettant de gérer les interactions et le jeu :
– 5 points : si lorsque l’on clique sur une image, on fait apparaître la figure cachée,
– 5 points : si l’on clique successivement sur 2 images identiques, les figures restent retournées. Un compteur affiche le nombre de tours ( un tour consiste à retourner 2 cartes ),
– 5 points : les cartes seront placées de manière aléatoire à chaque début de partie.
Aide :
Pour laisser un certain temps les cartes affichées avant de les retourner, on pourra utiliser la fonction js :
setTimeout(nom_fonction, 2000)
// 2000 désigne le temps en ms avant d'appeler la fonction nom_fonction() sous la forme d'une fonction anonyme
// on declare la disposition initiale du memory
var cartes=[1,2,0,1,3,3,4,8,9,2,7,4,5,6,6,5,8,9,0,7];
// on installe une variable pour savoir si on a cliqué
// sur la première carte ou la seconde
var carte=1;
// on installe une variable empechant de tricher
var bloque=false;
// un compteur de tour
var tour=0;
// on recupère des élèments par leurs id
var texte=document.getElementById("texte");
var mon_plateau=document.getElementById("plateau");
// on crée les images en leur attribuant une source
// et une id
for ( var i=0;i<20;i++){
// on crée un elt image
var mon_image=document.createElement("img");
// on attribue source et id
mon_image.src="images/dos.jpg";
mon_image.id=i;
// on ajoute un ecouteur d'evenements
mon_image.addEventListener("mousedown",changer_image,false)
// on ajoute l'elt image au plateau
mon_plateau.appendChild(mon_image);
}
function changer_image(evt){
// on verifie si on peut cliquer sur la carte
if ((this.getAttribute("src")=="images/dos.jpg")&&(bloque==false)){
// si on clique sur une premiere carte
if (carte==1){
// on change la source de l'image
this.src="images/"+cartes[this.id]+".jpg";
// on memorise l'id de la carte
id_image1=this.id;
// on passe à la carte 2
carte=2;
}
// si on a cliqué sur une seconde image
else {
// on modifie le nombre de tours
tour=tour+1;
// on modifie le texte dans le html
texte.innerText="Tour : "+tour;
// on retourne la carte en modifiant la source
this.src="images/"+cartes[this.id]+".jpg";
// on recupere l'image 1 et sa source
img1=document.getElementById(id_image1);
src_image1=img1.getAttribute("src");
// si les deux images sont différentes
// on empêche de cliquer et on attend 2000 ms avant
// de les retourner
if (src_image1!=this.getAttribute("src")){
id_image2=this.id;
bloque=true;
setTimeout(on_retourne_image, 2000)
}
// on revient à la première carte
carte=1;
}
}
}
// on retourne les deux images
function on_retourne_image() {
img1=document.getElementById(id_image1);
img2=document.getElementById(id_image2);
img1.src="images/dos.jpg";
img2.src="images/dos.jpg";
bloque=false;
}