我想知道用一個得分來創造一副牌或計算得分的最佳方法是什麼?正如你將在下面看到的,我有一個計算類來處理卡片分數,檢查卡片是什麼,並給它一個值並計算贏家。什麼是最好的方式來獲得一副牌中的得分值
林在具有比分爲每張卡的麻煩創建二十一點遊戲和我得到的牌隨機生成,但現在......
我只是要告訴你我有到目前爲止類你可以感受到我在做什麼和在什麼地方。
我知道,這是很多代碼是不生病的人誰都會盡量幫助,但請儘量和我一起承擔......
卡類
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