gpt4 book ai didi

c# - 如何正确使用 Switch-Case 来减少行数

转载 作者:行者123 更新时间:2023-11-30 13:36:59 30 4
gpt4 key购买 nike

我正在从事二十一点游戏项目。我有一个 helper() 方法来帮助用户完成他们的行为。例如:

经销商的明牌是:8玩家手牌总数为:16

玩家不确定,他应该击中还是留下。 helper() 函数在这里执行操作。

它基本上是计算牌组中好牌的数量(playerTotal + goodcard <= 21)

所以我就想着这样来做(伪代码)

public void helper() {

remain = 21 - playerTotal;

if (remain == 1) {
for (int i = 0; i < deck.last(); i++) {
switch (deck[i]) {
case A: numOfGood += 1
default: numOfBad +=1
}
}
}
else if (remain == 2) {
for (....) {
switch (deck[i]) {
case A: numOfGood += 1
case 2: numOfGood += 1
default: numOfBad +=1
}
}
}

//goes like this

}

我需要为所有卡片(A、2、3、4、5、6、7、8、9、J、K、Q、K)构建一个 switch-case 和 for 循环,但它看起来很大困惑。如何通过做一些不同的事情来减少行数?

最佳答案

首先编写一个GetValue 方法来计算卡片的(最小)数值。您可以使用 switch 或您想要的其他方式来实现它:

public static int GetValue(char card)
{
//...
}

一旦您的方法的实现变得更短和更简单:

foreach(var card in deck)
if(GetValue(card) <= remain)
numOfGood++;
else
numOfBad++;

另请注意,如果需要,您可以只计算好牌坏牌的数量,并使用剩余牌的总数来计算另一张牌。

var oddsOfSuccessfulHit = deck.Count(card => GetValue(card) <= remain) / 
(double) deck.Count;

关于c# - 如何正确使用 Switch-Case 来减少行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406516/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com