【发布时间】:2017-07-20 03:31:17
【问题描述】:
我正在使用 ReactJS 制作 Rock-Paper-Scissors-Lizard-Spock(生活大爆炸,电视节目),我正面临某种抽象问题。
switch (this.state.playerOnePick === 'Rock') {
case((this.state.playerTwoPick === 'Scissors') || (this.state.playerTwoPick === 'Lizard')):
return (
<div>
<h1>Player One wins !</h1>
<h2>P1: {this.state.playerOnePick} P2: {this.state.playerTwoPick}</h2>
</div>
);
break;
case((this.state.playerTwoPick === 'Paper') || (this.state.playerTwoPick === 'Spock')):
return (
<div>
<h1>Player Two wins !</h1>
<h2>P1: {this.state.playerOnePick}
P2: {this.state.playerTwoPick}</h2>
</div>
);
break;
}
switch (this.state.playerOnePick === 'Lizard') {
case((this.state.playerTwoPick === 'Spock') || (this.state.playerTwoPick === 'Paper')):
return (
<div>
<h1>Player One wins !</h1>
<h2>P1: {this.state.playerOnePick} P2: {this.state.playerTwoPick}</h2>
</div>
);
break;
case((this.state.playerTwoPick === 'Scissors') || (this.state.playerTwoPick === 'Rock')):
return (
<div>
<h1>Player Two wins !</h1>
<h2>P1: {this.state.playerOnePick} P2: {this.state.playerTwoPick}</h2>
</div>
);
break;
}
Rock vs Paper 正在返回正确的结果,无论谁选择它,当 P1:Rock,P2:Lizard,P1 按预期获胜,但当 P1:Lizard P2:Rock 时,它返回 P1 获胜..
What it returns me when P1:Lizard P2:Rock
蜥蜴在与洛克的比赛中无处可取...
(玩家选择武器时,playerOnePick 和 playerTwoPick 会正确更新)
【问题讨论】:
-
嗯,这就是你在第 22 行和第 23 行设置的内容。根据this,你的规则是正确的。
-
玩家二胜,因为你已经这样设置了。看看
<h1>在最后的case声明中说了什么。 -
switch (this.state.playerOnePick === 'Rock')没有意义。你在那里匹配一个布尔值。听起来你真正想要的是简单的if/else。 -
好吧,玩家 2 应该会赢,但实际上玩家 1 赢了。
标签: javascript reactjs if-statement switch-statement conditional-statements