Forslag til Løsning
function playHangman()
secretWord = lower(input('Skriv inn ordet som etterspørres:', 's'));
fprintf('\n\n\n\n\n\n\n');
errors = 0;
guessedChars = '';
revealed = '';
hasWon = false;
while true   
    [didFind, revealed] = checkRevealed(secretWord, revealed, guessedChars);
    if ~didFind
        errors = errors + 1;
    end
    printHangman(errors);
    printRevealed(revealed); 
    if strcmp(revealed, secretWord)
        hasWon = true;
        break
    end
	if errors >= 6
        printHangman(errors);
        break
    end

    guessedChar = input('Gjett ny bokstav:', 's');
    if length(strfind(guessedChars, guessedChar)) == 0
         guessedChars = [guessedChars guessedChar];
    else
        fprintf('Bokstaven er allerede gjettet...\n');
        errors = errors - 1;
        pause(1);
    end
end
if hasWon
    fprintf('Gratulerer, du vant!\n')
else
    fprintf('Du tapte...\n')
end
end

function [didMatch, revealedWord] = checkRevealed(word, revealed, chars) 
revealedWord = '';
for i = 1 : length(word)
    revealedWord(i) = '_';
    for j = 1 : length(chars)
        if chars(j) == word(i)
            revealedWord(i) = chars(j);
            continue
        end
    end
end
didMatch = ~strcmp(revealed, revealedWord);
revealed = revealedWord;
end
 
 
function printHangman(errors)
fprintf('\to----------------- o\n');
fprintf('\t|\t\t%s\n', fill(1, errors));
fprintf('\t|\t\t%s\n', fill(2, errors));
fprintf('\t|\t\t%s\n', fill(3, errors));
fprintf('\t|\t\t%s\n', fill(4, errors));
fprintf('\t|\t\t%s\n', fill(5, errors));
fprintf('\t|\t\t%s\n', fill(6, errors));
fprintf('\t|\t\t%s\n', fill(7, errors));
fprintf('\t|\t\t\n');
fprintf('\t|\t\t\n');
fprintf('       / \\\n');
end


function printRevealed(revealed)
fprintf('\t');
for j = 1 : length(revealed)
    fprintf('%s  ', revealed(j));
end
fprintf('\n');
end


function string = fill(line, errors)
string = "";
list = {"   |", " _\\//^", " (_oo", "   |", "  /|\",  "   |", "   LL"};
if errors >= line
    string = list{line};
end
end
  • No labels