display+string
3 views (last 30 days)
Show older comments
clear
clc
fid = fopen('hangman.txt','r');
if fid < 0, error('Cannot open file'); end
data = textscan(fid,'%s');
data = data{1};
fclose(fid);
index = ceil(rand * numel(data));
word = data{index};
masked = word;
masked(~isspace(masked)) = '*';
complete = 0;
wrong=0;
while complete == 0
clc;
fprintf('Word : %s\n',masked);
letter = char(input('Guess a letter : ','s'));
stat = findstr(word,letter);
fprintf('letters used so far',letter);
if ~isempty(stat)
masked(stat) = letter;
elseif ~isequal(word,letter)
wrong=wrong+1;
end
if isempty(findstr(masked,'*'))
complete = 1;
fail=0;
end
if wrong==6
complete=1;
fail=1;
end
end
if fail==0
clc; fprintf('You win, the word is : %s\n',masked);
elseif fail==1
disp('You lose')
end
How would I display all the letters the to the user, so they can see what letters they already guessed? Like if I guess an E, and there is no E, I want the program to show that I guessed E. And continue to do that for every guess, and list all the letters I've guessed.
And how do I get my words to be not be case sensitive? :[
0 Comments
Accepted Answer
Chandra Kurniawan
on 6 Dec 2011
Hello,
I modify my 'hangman.txt' at first line :
Signature
chair
calculator
window
picture
browser
phone
book
table
glass
Note that 'signature' becomes 'Signature'
clear
clc
fid = fopen('hangman.txt','r');
if fid < 0, error('Cannot open file'); end
data = textscan(fid,'%s');
data = data{1};
fclose(fid);
index = ceil(rand * numel(data));
word = lower(data{index});
masked = word;
masked(~isspace(masked)) = '*';
complete = 0;
wrong=0;
letter_guessed = '';
while complete == 0
clc;
%fprintf('Word : %s\n',masked);
fprintf('Letter guessed : %s\n',letter_guessed);
letter = char(input('Guess a letter : ','s'));
stat = findstr(word,letter);
fprintf('letters used so far\n',letter);
if ~isempty(stat)
masked(stat) = letter;
letter_guessed = strcat(letter_guessed,letter);
elseif ~isequal(word,letter)
wrong=wrong+1;
end
if isempty(findstr(masked,'*'))
complete = 1;
fail=0;
end
if wrong==6
complete=1;
fail=1;
end
end
if fail==0
clc; fprintf('You win, the word is : %s\n',masked);
elseif fail==1
disp('You lose')
end
7 Comments
Chandra Kurniawan
on 6 Dec 2011
Good job!
Now do your next problem :
http://www.mathworks.com/matlabcentral/answers/23172-splitting-into-function-files
More Answers (0)
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!