如何用switch语句简化C#石头剪刀布蜥蜴史波克的if-else逻辑?
用Switch语句简化石头剪刀布蜥蜴史波克的胜负判断
针对这段冗长的if-else代码,我们可以通过将玩家选择与电脑选择拼接成唯一字符串的方式,用switch语句大幅简化逻辑,同时保持代码直观易懂,适合初学者学习:
// 先处理平局情况 if (myChoice == compChoice) { winner = "none"; tie++; } else { // 拼接选择组合作为switch的判断键 string choiceCombination = $"{myChoice}-{compChoice}"; switch (choiceCombination) { // 玩家获胜的所有组合,共用同一处理逻辑 case "Rock-Scissors": case "Rock-Lizard": case "Paper-Rock": case "Paper-Spock": case "Scissors-Paper": case "Scissors-Lizard": case "Lizard-Spock": case "Lizard-Paper": case "Spock-Scissors": case "Spock-Rock": winner = "player"; win++; break; // 排除平局和玩家获胜后,剩余情况均为电脑获胜 default: winner = "computer"; lose++; break; } }
逻辑说明
- 优先处理平局:直接对比玩家与电脑的选择,快速排除平局场景,避免后续冗余判断。
- 组合判断键:用字符串拼接生成唯一标识(如
"Rock-Scissors"),让switch可以精准匹配胜负场景。 - 批量复用逻辑:switch支持多个case共享同一代码块,把所有玩家获胜的情况集中列出,减少重复代码。
- 默认分支兜底:排除平局和玩家胜利的情况后,剩下的必然是电脑获胜,无需再逐一列举。
这种写法结构清晰,没有复杂计算,非常适合给其他C#初学者讲解游戏胜负判断的逻辑优化思路。
内容的提问来源于stack exchange,提问作者1R0N65
相关产品推荐
相关产品推荐

