我想比较摇滚,纸张和剪刀游戏的文本框中的字符串。比较后,将结果显示在另一个文本框中。但它没有比较。有人可以帮帮我吗?谢谢你。
if strcmp('Rock'==get(handles.computer,'string'),'Rock'==get(handles.player,'string'))
set(handles.result,'string','Draw');
elseif strcmp('Rock'==get(handles.computer,'string'),'Paper'==get(handles.player,'string'))
set(handles.result,'string','Player wins');
elseif strcmp('Rock'==get(handles.computer,'string'),'Scissors'==get(handles.player,'string'))
set(handles.result,'string','Computer wins');
elseif strcmp('Paper'==get(handles.computer,'string'),'Rock'==get(handles.player,'string'))
set(handles.result,'string','Computer wins');
elseif strcmp('Paper'==get(handles.computer,'string'),'Paper'==get(handles.player,'string'))
set(handles.result,'string','Draw');
elseif strcmp('Paper'==get(handles.computer,'string'),'Scissors'==get(handles.player,'string'))
set(handles.result,'string','Player wins');
elseif strcmp('Scissors'==get(handles.computer,'string'),'Rock'==get(handles.player,'string'))
set(handles.result,'string','Player wins');
elseif strcmp('Scissors'==get(handles.computer,'string'),'Paper'==get(handles.player,'string'))
set(handles.result,'string','Computer wins');
elseif strcmp('Scissors'==get(handles.computer,'string'),'Scissors'==get(handles.player,'string'))
set(handles.result,'string','Draw');
end
答案 0 :(得分:2)
问题在于比较两个文本框的字符串:
if strcmp('Rock'==get(handles.computer,'string'),'Rock'==get(handles.player,'string'))
在此声明中:
'Rock'==get(handles.computer,'string')
你逐个元素地比较两个字符串的字符。
如果第一个字符串的第i个字符等于第二个字符串的第i个字符,则此比较返回类型logical
的数组1
,否则返回0
)
请注意,如果两个字符串的长度不同,您将收到错误,例如Matrix dimensions must agree.
同样适用于声明的第二部分:
'Rock'==get(handles.player,'string')
如果计算机和播放器都插入相同的字符串(例如 Rock ),那么您正在使用strcmp
比较两个logical
数组,它失败了。
cases
因此,您必须直接比较字符串。
可能的解决方案是使用switch
语句:
lower case
( Rock 和 rock 是......相同的)cases
的{{1}}拥有不同的组合可能的实施可能是:
switch
希望这有帮助,
Qapla'
答案 1 :(得分:0)
作为@il_raffa的替代方案,我建议分别将rock
,scissor
,paper
映射到[1,2,3]
。然后从computer
中减去player
的值。
然后你可以轻松地if, else if, else
。
if ismember(player - computer, [-1 2]) %This mean player got a
'player wins'
elseif ismember(player - computer, [1 -2])
'computer wins'
else
'draw'
end
当只有9个条件时,switch, case
可能不是什么大问题,但如果条件数量较多,这样的技术会使工作更容易。