用java写一个程序,要求如下:抽取纸牌 从一副纸牌中任意抽取一张,并打印出抽取的是哪一张牌。一副牌有4种花色:黑桃、红桃、方块和梅花。每种花色有13张牌,共有52张牌。 功能拓展:有4个人一起打牌,随机给4个人发牌,输出4人的发牌结果。
时间: 2024-09-17 18:06:37 浏览: 68
在Java中,我们可以创建一个模拟纸牌游戏的简单程序。首先,我们定义一个`Card`类来表示纸牌,包含花色和点数两个属性。然后,我们再创建一个`Deck`类来代表整副牌,并提供洗牌和抽牌的功能。最后,扩展功能,我们添加一个`DealCards`方法来随机分配牌。
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
// 定义纸牌类
class Card {
enum Suit { SPADES, HEARTS, DIAMONDS, CLUBS }
int rank;
Card(int rank, Suit suit) {
this.rank = rank;
}
public String toString() {
return suit.name().charAt(0) + rank; // 输出格式如 "S10" 或 "H7"
}
}
// 定义整副牌类
class Deck {
private List<Card> cards;
public Deck() {
cards = new ArrayList<>();
for (Suit suit : Card.Suit.values()) {
for (int i = 2; i <= 13; i++) {
cards.add(new Card(i, suit));
}
}
}
// 洗牌方法
public void shuffle() {
Collections.shuffle(cards);
}
// 抽牌方法
public Card drawCard() {
if (cards.isEmpty()) {
throw new IllegalStateException("No more cards in the deck");
}
return cards.remove(0);
}
// 打印当前剩余的牌
public void printRemainingCards() {
System.out.println("Remaining cards: " + cards);
}
}
// 扩展功能 - 分配牌
public class Game {
public static void main(String[] args) {
Deck deck = new Deck();
deck.shuffle();
List<Card> playersCards = new ArrayList<>();
for (int i = 0; i < 4; i++) {
playersCards.add(deck.drawCard());
System.out.println("Player " + (i+1) + ": " + playersCards.get(i).toString());
}
deck.printRemainingCards(); // 可选:显示剩余牌的数量
}
}
```
这个程序会生成一副牌并随机分发给四个玩家。每次循环都会从牌堆中抽出一张牌给玩家,直到所有牌都被发完。运行这个程序时,你会看到每个玩家得到的牌以及剩余的牌(如果要展示)。
阅读全文