java如何创建一副随机的卡片?
我需要使用两个字符串创建一组卡片:“HSCD”和“A2345678910JQK”
public class Deck {
Random random=new Random();
Queue cards=new Queue(112);
String suits="HSCD";
String rands="A2345678910JQK";
public Deck() {
for (int i = 0; i < suits.length(); i++) {
for (int j = 0; j < rands.length(); j++) {
char suit = suits.charAt(random.nextInt(suits.length()));
char rand = rands.charAt(random.nextInt(rands.length()));
if (rand == '1' || rand == '0') {
String s = Integer.toString(10);
cards.enqueue(new Card(suit, s));
} else {
String s1 = Character.toString(rand);
cards.enqueue(new Card(suit, s1));
}
}
}
}
public void display(){
for (int i = 0; i < cards.size(); i++) {
System.out.print(cards.peek());
cards.enqueue(cards.dequeue());
}
}
public Queue getCards() {
return cards;
}
public void setCards(Queue cards) {
this.cards = cards;
}
public String getSuits() {
return suits;
}
public void setSuits(String suits) {
this.suits = suits;
}
public String getRands() {
return rands;
}
public void setRands(String rands) {
this.rands = rands;
}}
我有甲板和纸牌课
public class Card {
private char rand;
private String suit;
public Card(char rand, String suit) {
this.rand = rand;
this.suit = suit;
}
public Card(){}
public char getRand() {
return rand;
}
public void setRand(char rand) {
this.rand = rand;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public String toString(){
return "\t"+rand + suit;
}}
但我无法解决每件西装必须有13兰特的问题。在我的程序中,我的牌组是随机创建的。我的牌必须洗牌。我不能使用列表或数组结构,因为老师告诉我们:)。你能帮我吗
# 1 楼答案
您尚未包含
Queue
类,因此帮助将受到限制。这里还有其他一些建议而且,很多时候,纸牌游戏软件使用
T
表示十,这就是我在本例中所做的。它可以更改,但在您的实现中,您不能将10存储为单个字符,并且为卡列维护两种类型很麻烦。所以你应该把你所有的军衔和西装都定为String
型# 2 楼答案
你在为每件西装制作14张卡片,而不是13张:你在两次制作
10
。用0
或1
从rands
移除如果你先创建卡片,然后洗牌,这会更容易
卡片的制作应该与你已经在做的事情相似,减去随机化-只需按顺序检查套装和价值:
然后,按如下方式洗牌:
# 3 楼答案
另一种方法:像iluxa一样创建你的牌组,说你自己,然后用以下方法洗牌:
通过多次切换两张随机卡,代码将充斥你的牌组
# 4 楼答案
只需将第二个字符串复制四次。取两个随机数后,一个对应符号,一个对应数字。最后,将符号+数字放入内存,并删除字符串中的数字: