我想知道用一个得分来创造一副牌或计算得分的最佳方法是什么?正如你将在下面看到的,我有一个计算类来处理卡片分数,检查卡片是什么,并给它一个值并计算赢家。什么是最好的方式来获得一副牌中的得分值
林在具有比分为每张卡的麻烦创建二十一点游戏和我得到的牌随机生成,但现在......
我只是要告诉你我有到目前为止类你可以感受到我在做什么和在什么地方。
我知道,这是很多代码是不生病的人谁都会尽量帮助,但请尽量和我一起承担......
卡类
public static class Card
{
// Should be enumes eg. Privat enume suite{}
private static string[] Suite = new string[4] {"Clubs", "Hearts", "Spades", "Diamonds" };
private static string[] FaceValue = new string[13] {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
public static List<string> CreateDeck()
{
List<string> deckOfCards = new List<string>();
for (int s = 0; s < 4; s++)
{
string sut = Suite[s];
for (int fV = 0; fV < 13; fV++)
{
string value = FaceValue[fV];
deckOfCards.Add(sut + value);
}
}
// End of For loop.
deckOfCards.Shuffle();
return deckOfCards;
}
public static void Shuffle<T>(this IList<T> list)
{
Random rng = new Random();
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
经销商类(这是每说的经销商将获得,洗牌和发牌出)
class Dealer
{
private List<string> randomisedCards;
public Dealer()
{
randomisedCards = Card.CreateDeck();
}
public string dealCard()
{
string randCard = randomisedCards[0];
randomisedCards.RemoveAt(0);
// Creating the object.
Calculate c = new Calculate(randCard);
return randCard;
}
}
Player类
中心类class Player
{
// Member variables.
private int newPlayerScore;
private int newPlayerWin;
private int newPlayerLosses;
private int newPlayerTies;
// Defalut constructor used to set the member variables to their default values and will be used to reset
// the players details.
public Player()
{
newPlayerScore = 0;
newPlayerWin = 0;
newPlayerLosses = 0;
newPlayerTies = 0;
}
// Propertie used to get and set the players score.
public int calcPlayerScore
{
get
{
return newPlayerScore;
}
set
{
newPlayerScore = value;
}
}
public void getPlayerDetails()
{
Calculate c = new Calculate(newPlayerScore);
}
}
计算类(这是我使用来计算赢家比分每张卡什么,这是我的问题,因为这不是做事情的最好方法)提前
class Calculate
{
Player p = new Player();
// Member variable.
private string newCard;
private int pScore;
private int dScore;
// Overloaded constructor.
public Calculate(string card)
{
newCard = card;
}
public Calculate(int playerScore)
{
pScore = playerScore;
}
public void calculateScore()
{
switch (newCard)
{
case "Spades2":
case "Hearts2":
case "Diamonds2":
case "Clubs2":
pScore = 2;
p.calcPlayerScore = pScore;
break;
case "Spades3":
case "Hearts3":
case "Diamonds3":
case "Clubs3":
pScore = 3;
p.calcPlayerScore = pScore;
break;
case "Spades4":
case "Hearts4":
case "Diamonds4":
case "Clubs4":
pScore = 4;
p.calcPlayerScore = pScore;
break;
case "Spades5":
case "Hearts5":
case "Diamonds5":
case "Clubs5":
pScore = 5;
p.calcPlayerScore = pScore;
break;
case "Spades6":
case "Hearts6":
case "Diamonds6":
case "Clubs6":
pScore = 6;
p.calcPlayerScore = pScore;
break;
case "Spades7":
case "Hearts7":
case "Diamonds7":
case "Clubs7":
pScore = 7;
p.calcPlayerScore = pScore;
break;
case "Spades8":
case "Hearts8":
case "Diamonds8":
case "Clubs8":
pScore = 8;
p.calcPlayerScore = pScore;
break;
case "Spades9":
case "Hearts9":
case "Diamonds9":
case "Clubs9":
pScore = 9;
p.calcPlayerScore = pScore;
break;
default:
pScore = 10;
p.calcPlayerScore = pScore;
break;
}
}
}
谢谢。
也许创建一个结构,并创建一个结构类型的平台?公共结构卡 { string suite; int value; } – Pavenhimself 2014-09-22 07:37:35
我想知道 - 因为你只有52个值,可能明确定义卡片和分数可能最终导致更多的灵活性和性能? – kidshaw 2014-09-22 07:51:25
我不会经常玩二十一点,但是这张卡的套装是否与其分数有关? (我认为这只是数值),所以我没有看到你从使用switch语句获得什么,只需添加卡片值 – Sayse 2014-09-22 07:53:08