gpt4 book ai didi

javascript - 使用构造函数在 JavaScript 中类(从 C# 转换)

转载 作者:行者123 更新时间:2023-11-30 08:10:14 25 4
gpt4 key购买 nike

我有以下 C# 代码,是否可以轻松转换为 JavaScript?我需要这个才能在浏览器中 100% 运行。

据我所知,枚举不存在,可以用字符串代替。

简而言之,我有一个类 Deck witch 持有一个 Card 数组,类 Card 确实有一些属性,包括等级、符号等,还有一个洗牌功能。

我不希望任何人在这里转换我的所有代码,但请指导我如何完成类似的事情。

public enum Suit
{
Club,
Diamond,
Heart,
Spade
};

public class Card
{
public Suit suit;
public int value;
public string text;
public int HCP;

public Card()
{
}

public Card(Suit _suit, int _value, int _HCP, string _text)
{
suit = _suit;
value = _value;
HCP = _HCP;
text = _text;
}
};

public class Deck
{
public Card[] Cards = new Card[52];
public Deck()
{
Cards[0] = new Card(Suit.Spade, 14, 4, "A");
Cards[1] = new Card(Suit.Spade, 13, 3, "K");
Cards[2] = new Card(Suit.Spade, 12, 2, "Q");
Cards[3] = new Card(Suit.Spade, 11, 1, "J");
Cards[4] = new Card(Suit.Spade, 10, 0, "T");
Cards[5] = new Card(Suit.Spade, 9, 0, "9");
Cards[6] = new Card(Suit.Spade, 8, 0, "8");
Cards[7] = new Card(Suit.Spade, 7, 0, "7");
Cards[8] = new Card(Suit.Spade, 6, 0, "6");
Cards[9] = new Card(Suit.Spade, 5, 0, "5");
Cards[10] = new Card(Suit.Spade, 4, 0, "4");
Cards[11] = new Card(Suit.Spade, 3, 0, "3");
Cards[12] = new Card(Suit.Spade, 2, 0, "2");

Cards[13] = new Card(Suit.Heart, 14, 4, "A");
Cards[14] = new Card(Suit.Heart, 13, 3, "K");
Cards[15] = new Card(Suit.Heart, 12, 2, "Q");
Cards[16] = new Card(Suit.Heart, 11, 1, "J");
Cards[17] = new Card(Suit.Heart, 10, 0, "T");
Cards[18] = new Card(Suit.Heart, 9, 0, "9");
Cards[19] = new Card(Suit.Heart, 8, 0, "8");
Cards[20] = new Card(Suit.Heart, 7, 0, "7");
Cards[21] = new Card(Suit.Heart, 6, 0, "6");
Cards[22] = new Card(Suit.Heart, 5, 0, "5");
Cards[23] = new Card(Suit.Heart, 4, 0, "4");
Cards[24] = new Card(Suit.Heart, 3, 0, "3");
Cards[25] = new Card(Suit.Heart, 2, 0, "2");

Cards[26] = new Card(Suit.Diamond, 14, 4, "A");
Cards[27] = new Card(Suit.Diamond, 13, 3, "K");
Cards[28] = new Card(Suit.Diamond, 12, 2, "Q");
Cards[29] = new Card(Suit.Diamond, 11, 1, "J");
Cards[30] = new Card(Suit.Diamond, 10, 0, "T");
Cards[31] = new Card(Suit.Diamond, 9, 0, "9");
Cards[32] = new Card(Suit.Diamond, 8, 0, "8");
Cards[33] = new Card(Suit.Diamond, 7, 0, "7");
Cards[34] = new Card(Suit.Diamond, 6, 0, "6");
Cards[35] = new Card(Suit.Diamond, 5, 0, "5");
Cards[36] = new Card(Suit.Diamond, 4, 0, "4");
Cards[37] = new Card(Suit.Diamond, 3, 0, "3");
Cards[38] = new Card(Suit.Diamond, 2, 0, "2");

Cards[39] = new Card(Suit.Club, 14, 4, "A");
Cards[40] = new Card(Suit.Club, 13, 3, "K");
Cards[41] = new Card(Suit.Club, 12, 2, "Q");
Cards[42] = new Card(Suit.Club, 11, 1, "J");
Cards[43] = new Card(Suit.Club, 10, 0, "T");
Cards[44] = new Card(Suit.Club, 9, 0, "9");
Cards[45] = new Card(Suit.Club, 8, 0, "8");
Cards[46] = new Card(Suit.Club, 7, 0, "7");
Cards[47] = new Card(Suit.Club, 6, 0, "6");
Cards[48] = new Card(Suit.Club, 5, 0, "5");
Cards[49] = new Card(Suit.Club, 4, 0, "4");
Cards[50] = new Card(Suit.Club, 3, 0, "3");
Cards[51] = new Card(Suit.Club, 2, 0, "2");
}
public void Shuffle(Random r)
{
for (int n = Cards.Length - 1; n > 0; --n)
{
int k = r.Next(n + 1);
Card temp = Cards[n];
Cards[n] = Cards[k];
Cards[k] = temp;
}
}
};

最佳答案

枚举可以转换为散列:

var Suit = {
Club: 0,
Diamond: 1,
Heart: 2,
Spade: 4
};

Card 非常简单:

function Card(suit, value, hcp, text) {
this.suit = suit;
this.value = value;
this.hcp = hcp;
this.text = text;
}

还有Deck:

function Deck() {
this.cards = [
new Card(Suit.Heart, 14, 4 "A"),
new Card(Suit.Heart, 13, 3 "K"),
// ...
];
}

然后将shuffle添加到Deck:

Deck.prototype.shuffle = function() {
this.cards.sort(function() { return 0.5 - Math.random() });
};

关于javascript - 使用构造函数在 JavaScript 中类(从 C# 转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11448202/

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