Задать вопрос
@ToperHarlee
about myself

Как рисовать части тела человечка всякий раз, когда игрок вводит неверную букву?

let canvas = document.querySelector('canvas')
let ctx = canvas.getContext('2d')


function pickWord() {
    // Возвращает случайно выбранное слово
    var words = [
        "программа",
        "макака",
        "прекрасный",
        "оладушек",
        "телевизор",
        "монитор",
        "ручка",
        "тапочек",
        "карандаш",
        "плита"
    ];
    var word = words[Math.floor(Math.random() * words.length)];
    return word;
};


function setupAnswerArray(word) {
    let answerArray = [];
    for (let i = 0; i < word.length; i++){answerArray[i] = '_';}
    return answerArray;
};

function showPlayerProgress(answerArray) {
    alert(answerArray.join(' '));

}

function getGuess() {
    let guess = prompt('Угадайте букву или нажмите отмена для выхода из игры'.toLowerCase());
    return guess;
}

function updateGame (guess, word, answerArray) {
    // Обновляем answerArray по ответу игрока (guess)
    let current = 0; // поставил счетчик
    for (let  j = 0; j < word.length; j++){
        if (word[j] === guess && answerArray[j].includes('_')) {
            answerArray[j] = guess;
            current++;
        }
    }
    return current;
    // current возвращает число = сколько раз было встречена буква guess в слове
    //  с помощью этого обновляем remainingLetters  которое = word.length

}

let showAnswerCongrat = function(answerArray) {
    alert(answerArray.join(' '));
    if (count === 0) {alert('GAME OVER')}
    else if (remainingLetters === 0) {alert('well done! you now know secret word' + word)}
    else {alert('learn JS')}
}

function happyMan(counts) {
 if (count === 6) {ctx.lineWidth = 4;ctx.strokeRect(10, 10, 20, 20);ctx.stroke();}
    else if (count === 5) {ctx.lineWidth = 4;ctx.beginPath();ctx.moveTo(20, 30);ctx.lineTo(20, 60);ctx.stroke();}
    else if (count === 4) {ctx.lineWidth = 4;ctx.moveTo(20, 40);ctx.lineTo(50, 30);ctx.stroke();}
    else if (count === 3) {ctx.lineWidth = 4;ctx.moveTo(20, 40);ctx.lineTo(0, 30);ctx.stroke();}
    else if (count === 2) {ctx.lineWidth = 4;ctx.moveTo(20, 60);ctx.lineTo(40, 70);ctx.stroke();}
}

let word = pickWord();
let answerArray = setupAnswerArray(word)
let remainingLetters = word.length;
let count =  6;
let totalRemainigLetters = remainingLetters;
//игровой цикл
while (remainingLetters > 0 && count !== 0) {

    showPlayerProgress(answerArray);
    //запрос варианта ответа
    let guess = getGuess();
   
    if (guess === null){break;}
    else if (guess.length !== 1) {
        alert('Вводить нужно только одну букву!и пишите ее не с заглавной');
    }
    else {
        let correctGuesses = updateGame(guess, word, answerArray);
        remainingLetters -= correctGuesses;
        totalRemainigLetters === remainingLetters
        count--; // условие для ограниченного количества попыток
    }
   if(count > 0){
                    let showManParts = happyMan(count, word);

  }
}
showAnswerCongrat(answerArray)

Здравствуйте. Как сделать (через функцию) так , чтобы при каждом неправильном ответе игрока, рисовалась часть человечка? Теоретически нужно задать переменную отслеживающую попытки как аргумент этой функции, а потом через учловия if дорисовывать по элементу. Но на практике ничего не получается(беру переменную count как аргумент для функции
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы