String and display help

1 次查看(过去 30 天)
clear all clc
fid = fopen('hangman.txt', 'r'); if fid < 0, error('Cannot open file.'); end CC = textscan(fid, '%s'); C = CC{1}; fclose(fid); index = ceil(rand * numel(C)); word = C{index};
original='Hello World'; Word = word; Word(~isspace(Word)) = '*'
first_guess=char(input('Guess a letter \n','s'));
result1 = ~isempty(findstr(word,first_guess));
selected = first_guess; stars(original == first_guess) = first_guess
OUTPUT Word =
*******
Guess a letter i
stars =
Empty string: 1-by-0
The word is signature, but I don't unerstand how it outputs an empty string. Also, how would I get the letter to replace the asterisk after each guess? Would I end up using a while loop to keep the user guessing until the word is uncovered? This is a lot harder than I thought it would be.
  3 个评论
Chris
Chris 2011-12-5
Hangman text is just a document filled with different words.My program is supposed to be a hangman game.It chooses a random word from that document.The asterisks are there to shield the user from the answer. Although, I did figure some of the problem out, I still do not know how to get the asterisks show up with the letters if the user guesses correctly.
fid = fopen('hangman.txt', 'r');
if fid < 0, error('Cannot open file.');
end
CC = textscan(fid, '%s');
C = CC{1};
fclose(fid);
index = ceil(rand * numel(C));
word = C{index};
Word = word;
Word(~isspace(Word)) = '*'
first_guess=char(input('Guess a letter \n','s'));
result1 = ~isempty(findstr(word,first_guess));
selected = first_guess;
Progress(word == first_guess) = first_guess
OUTPUT
Word =
*********
Guess a letter
e
Progress =
e
Walter Roberson
Walter Roberson 2011-12-5
http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup

请先登录,再进行评论。

采纳的回答

Chandra Kurniawan
Chandra Kurniawan 2011-12-5
Hello,
So long time you have waiting. Here I give you my code.
I have 'Hangman.txt'
signature
chair
calculator
window
picture
browser
phone
book
table
glass
And this is my code :
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;
while complete == 0
clc;
fprintf('Word : %s\n',masked);
letter = char(input('Guess a letter : ','s'));
stat = findstr(word,letter);
if ~isempty(stat)
masked(stat) = letter;
end
if isempty(findstr(masked,'#'))
complete = 1;
end
end
clc; fprintf('Word : %s\n',masked);
Just try to run it.
  3 个评论
Chris
Chris 2011-12-5
Wow, thank you! I do have a couple more questions. How would I add a break to that after the user guesses 6 times.
Jan
Jan 2011-12-5
You do not need a CHAR in "char(input('Guess a letter : ','s'))".

请先登录,再进行评论。

更多回答(1 个)

Sean de Wolski
Sean de Wolski 2011-12-5
Use ismember to determine if the letter 'is a member' of the word.
%Sample word, disguised word and letter guess
word = 'signature';
word_disguised = repmat('*',size(word));
letter = 'q'; %try various letters
%Engine
idx = ismember(word,letter); %index of members
if ~any(idx)
disp('Fail Lose an arm!');
else
word_disguised(idx) = letter;
end

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by