我正在创造一个二十一点游戏,到目前为止,我已经制作了一个卡片类,甲板课和鞋类。卡类工作甲板类工程,鞋类工作,但我仍在我的手工作。我创建了一个GetSum方法,通过调用SymbolToValue方法返回手中卡片的总和,以获取每个卡片符号的值并添加值。但是我的SymbolToValue方法一直给我错误,不能隐式地将int类型转换为bool。我不知道如何解决这个问题。
理解正确方向的任何帮助或指导
这是我手工课上的内容
class Hand
{
const Int32 MAX_CARDS = 12;
private Card[] _hand = new Card[MAX_CARDS];
private Int32 _cardCount;
public Hand()
{
_cardCount = 0;
}
public Int32 CardCount
{
get
{
return _cardCount;
}
}
public void AddCard(Card card)
{
if (_cardCount < MAX_CARDS)
{
throw new Exception("Cannot of more than 12 cards in a hand");
}
else
{
_hand.Add(card);
_cardCount++;
}
}
public Card GetCard(Int32 cardIndex)
{
if (cardIndex >= _cardCount)
{
throw new Exception("Invalid Entry");
}
else
{
return _hand[cardIndex];
}
}
Int32[] cardValues = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10 };
String[] cardSymbols = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
private Int32 SymbolToValue(String symbol)
{
int index = Array.IndexOf(cardSymbols, symbol);
if (index != -1)
{
return cardValues[index];
}
else
{
throw new Exception("Value Not In Table");
}
}
public Int32 GetSum()
{
String symbol;
Int32 value;
for(value = 0; SymbolToValue(symbol); value++)
{
return value;
}
}
}
答案 0 :(得分:0)
看起来你正试图迭代手来获得总和,试试这个以获取你的GetSum:
public Int32 GetSum()
{
int value = 0;
for(int i = 0; i < _hand.length; i++)
{
value += SymbolToValue(_hand[i]);
}
return value;
}
答案 1 :(得分:0)
您正在for循环中使用int32函数,其中应该存在条件。
在您的示例中,for循环期望布尔值为true / false,无论是在循环中执行代码还是继续执行。
为了使您的代码有效,您需要一个条件才能出现。
实施例
for(value = 0; value > SymbolToValue(symbol); value++)
{
//your stuff
}
如果变量'value'的值是提供的条件,则继续,否则循环直到条件为真。这不是您的答案,但会解决您所面临的问题。