【发布时间】:2014-04-23 05:23:46
【问题描述】:
所以我有这个类可以为二十一点游戏随机抽取一张牌。当我尝试计算起手牌的分数时,理论上它应该可以工作,但我不知道为什么它没有。而且,在我运行该程序几次并且运行良好后,它会抛出一个StackOverflowException。
public static class DrawCard
{
static string[] culoare = new string[4] { "r", "g", "b", "v" };
static string[] numere = new string[13] { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
public static Rectangle carteRec = new Rectangle(50, 50, 100, 100);
public static Rectangle sourceRec = new Rectangle(0, 0, 220, 314);
public static GraphicsUnit unit = GraphicsUnit.Pixel;
public static Image carte1, carte2;
private static string carte;
private static int _nr, _cul;
public static int scor1, scor2, _scor;
public static string randomcard(Random r, int scor)
{
//string carte = "";
//randomizam culoarea si numarul cartii
_nr = r.Next(0, 13);
_cul = r.Next(0, 4);
if (_nr >= 0 && _nr <= 8)
{
scor += int.Parse(numere[_nr]);
}
else if (_nr > 8 && _nr <= 12)
{
scor += 10;
}
carte = (string)numere[_nr] + (string)culoare[_cul];
return carte;
}
public static int Scor
{
get { return _scor; }
set { _scor = value; }
}
public static void StartHand(Graphics desen, Rectangle destRec1, Rectangle destRec2)
{
string k = randomcard(new Random(), scor1);
string j = randomcard(new Random(), scor2);
//_scor = scor1 + scor2;
if (k != j)
{
carte2 = Image.FromFile(@"C:\Users\Raul\Documents\visual studio 2010\Projects\Blackjack\Blackjack\Carti\" + j + ".jpg");
carte1 = Image.FromFile(@"C:\Users\Raul\Documents\visual studio 2010\Projects\Blackjack\Blackjack\Carti\" + k + ".jpg");
desen.DrawImage(carte1, destRec1, sourceRec, unit);
desen.DrawImage(carte2, destRec2, sourceRec, unit);
}
else
{
StartHand(desen, destRec1, destRec2);
}
}
}
【问题讨论】:
-
抛出异常时调试器告诉你什么?
-
恭喜:你无意中发现了尾调用的必要性;p