xxxxxxxxxx
var solution = "";
var lettre = "";
var bouton = [600,300,670,350];
var centre_bouton;
var lettres_essayees = [] //Liste des lettres essayées (bonnes ou pas)
var etape = 0; //L'étape du pendu (définie par le nombre de tentatives ratées), pour l'affichage du pendu
var score = 0; //Le nombre de tentatives
var mot_joueur_vecteur; //Les coordonnées de là où le mot en cours sera affiché
var mot_joueur = ""; //Le mot du joueur (ce qu'il a deviné), qui commence sous la forme _ _ _ _ ...
var pendu_vecteur; //Les coordonnées de là où le pendu sera affiché
var phase = 1; //1 -> choix du mot, 2 -> jeu, 3 -> défaite, 4 -> victoire
function setup() {
createCanvas(windowWidth, windowHeight);
rectMode(CORNERS);
textAlign(CENTER);
solution = solution.toUpperCase();
centre_bouton = createVector(); //On utilise un vecteur pour stocker des coodronnées
centre_bouton.x = (bouton[0] + bouton[2]) / 2; //On calcule les coordonneés du centre du bouton
centre_bouton.y = (bouton[1] + bouton[3]) / 2 + 5; //avec un décalage car l'ordonnée est celle de la ligne en dessous du texte
mot_joueur_vecteur = createVector(350, 325); //Les coordonnées de là où le mot du joueur sera affiché
pendu_vecteur = createVector(300,75); //Les coordonnées de là où le pendu sera affiché
}
function draw() {
if (phase == 1) {
phase1();
} else if (phase == 2) {
phase2();
} else if (phase == 3) {
phase3();
} else if (phase == 4) {
phase4();
}
}
function phase1() { //Choix du mot
background(255);
rectMode(CENTER);
rect(windowWidth/2, windowHeight/2, solution.length * 10 + 50, 50);
textSize(15);
strokeWeight(2);
text(solution, windowWidth/2, windowHeight/2 + 5);
}
function phase2() { //Jeu
background(255);
strokeWeight(2);
rectMode(CORNERS);
rect(bouton); //on affiche le bouton valider
textSize(15);
text(lettre, centre_bouton.x, centre_bouton.y); //Puis son texte
textSize(20);
afficher_mot_joueur();
afficher_pendu();
}
function phase3() {
background(255);
rectMode(CENTER);
var message = "Perdu ! La solution était : " + solution;
rect(windowWidth/2, windowHeight/2, message.length * 10 + 50, 50);
text(message, windowWidth/2, windowHeight/2 + 5);
}
function phase4() {
background(255);
rectMode(CENTER);
var message = "Gagné ! La solution était : " + solution;
rect(windowWidth/2, windowHeight/2, message.length * 10 + 50, 50);
text(message, windowWidth/2, windowHeight/2 + 5);
}
function mousePressed() {
if (mouseX > bouton[0] && mouseX < bouton[2] && mouseY > bouton[1] && mouseY < bouton[3]) {
pendu();
}
}
function keyPressed() {
if (keyCode != ENTER && keyCode != BACKSPACE) {
lettre = key;
}
if (phase == 1) {
if (keyCode == ENTER) {
for (i in solution) {
mot_joueur = mot_joueur.concat("_");
}
reveler(solution[0]);
lettres_essayees.push(solution[0]);
reveler(" ");
lettres_essayees.push(" ");
lettre = "";
phase = 2;
} else if (keyCode == BACKSPACE) {
solution = solution.slice(0, solution.length - 1);
} else {
solution = solution.concat(lettre);
}
} else if (phase == 2) {
if (keyCode == ENTER) {
pendu();
}
}
}
function pendu() { //Pour chaque tentative du joueur
if (lettres_essayees.indexOf(lettre) == -1) { //Si la lettre n'a pas été essayée
score ++;
lettres_essayees.push(lettre);
if (solution.indexOf(lettre) != -1) { //Si elle est dans la solution
reveler(lettre);
if (mot_joueur == solution) { //Si le mot est complètement révélé
phase = 4; //On passe à la phase de victoire
}
} else {
etape ++;
if (etape == 10) { //Au bout de 10 échecs
phase = 3; //On passe à la phase défaite
}
}
}
}
function reveler(lettre) { //On révèle une lettre du mot
for (var i= 0; i < solution.length; i++) {
if (solution[i] == lettre) {
mot_joueur = remplaceA(mot_joueur, i, lettre);
}
}
}
function remplaceA(str, i, lettre) { //Remplace le caractère i de str par lettre
return str.slice(0,i) + lettre + str.slice(i+1, str.length);
}
function afficher_pendu() {
strokeWeight(7);
if (etape > 0) { //Sol
strokeWeight(7);
line(pendu_vecteur.x, pendu_vecteur.y + 200, pendu_vecteur.x + 200, pendu_vecteur.y + 200);
}
if (etape > 1) { //Poteau
strokeWeight(7);
line(pendu_vecteur.x+30, pendu_vecteur.y + 200, pendu_vecteur.x+30, pendu_vecteur.y);
}
if (etape > 2) { //Angle
strokeWeight(7);
line(pendu_vecteur.x + 30, pendu_vecteur.y + 30, pendu_vecteur.x + 60, pendu_vecteur.y);
}
if (etape > 3) { //Barre
strokeWeight(7);
line(pendu_vecteur.x + 30, pendu_vecteur.y, pendu_vecteur.x + 150, pendu_vecteur.y);
}
if (etape > 4) { //Corde
strokeWeight(5);
line(pendu_vecteur.x + 120, pendu_vecteur.y, pendu_vecteur.x + 120, pendu_vecteur.y + 60);
}
if (etape > 5) { //Tête
strokeWeight(7);
ellipse(pendu_vecteur.x + 120, pendu_vecteur.y + 75, 30, 30);
}
if (etape > 6) { //Corps
strokeWeight(7);
line(pendu_vecteur.x + 120, pendu_vecteur.y + 90, pendu_vecteur.x + 120, pendu_vecteur.y + 120);
}
if (etape > 7) { //Bras
strokeWeight(7);
line(pendu_vecteur.x + 100, pendu_vecteur.y + 100, pendu_vecteur.x + 120, pendu_vecteur.y + 90);
line(pendu_vecteur.x + 140, pendu_vecteur.y + 100, pendu_vecteur.x + 120, pendu_vecteur.y + 90);
}
if (etape > 8) { //Jambes
strokeWeight(7);
line(pendu_vecteur.x + 110, pendu_vecteur.y + 140, pendu_vecteur.x + 120, pendu_vecteur.y + 120);
line(pendu_vecteur.x + 130, pendu_vecteur.y + 140, pendu_vecteur.x + 120, pendu_vecteur.y + 120);
}
if (etape > 9) {
phase = 3;
}
}
function afficher_mot_joueur() {
var str = mot_joueur[0];
for (i = 1; i < mot_joueur.length; i++) {
str = str.concat(" ", mot_joueur[i]);
}
text(str, mot_joueur_vecteur.x, mot_joueur_vecteur.y);
}
var socket = io.connect($OP.getEchoServerURL(476739));
Learn more See an example