display+string
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Chandra Kurniawan
2011-12-6
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 个评论
Chandra Kurniawan
2011-12-6
Good job!
Now do your next problem :
http://www.mathworks.com/matlabcentral/answers/23172-splitting-into-function-files
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!