java实现:扑克牌

package test;
public class DeckofCard {
    public static void main(String[] args)
    {
        String[] suits = {"红桃", "梅花", "方片", "黑桃"};
        String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        int[] card = new int[52];
        for(int i : card)
            card[i] = i;
        /*随机抽10张牌*/
        for(int i = 0; i < 10; i ++)
        {
            int random = (int)(Math.random() * 52);
            System.out.println("the number is " + random);
            System.out.println("it is " + suits[random/13] + ranks[random%13]);
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好,这是一个非常有趣的Java GUI项目。我将为您提供一些实现此项目的代码示例,但由于这是一个比较复杂的项目,我无法提供完整的代码。您需要根据以下示例自己编写代码来实现该项目。 首先,我们需要创建一个类来表示每张扑克牌。该类应该包括以下属性: - 花色(Suit):红心、方块、梅花、黑桃 - 点数(Rank):A、2、3、4、5、6、7、8、9、10、J、Q、K - 是否被选中(isSelected):该属性用于表示该张扑克牌是否被选中 接下来,我们需要创建一个窗口界面,该界面应该包括以下组件: - 一个JPanel,用于容纳所有的扑克牌 - 一个JButton,用于洗牌 - 一个JLabel,用于显示提示信息 每张扑克牌可以使用JLabel来表示。在JLabel上添加MouseListener,用于处理用户点击事件。当用户点击一张扑克牌时,我们需要将其向上移动,表示选中状态。如果用户再次点击该张扑克牌,则又回到初始状态。 洗牌按钮的ActionListener应该随机生成每张扑克牌的位置,并将它们重新排列。 这里是一些示例代码来帮助你开始: ``` import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class PokerGame extends JFrame { private static final int WIDTH = 800; private static final int HEIGHT = 600; private static final int NUM_CARDS = 52; private static final int NUM_COLS = 13; private static final int NUM_ROWS = 4; private List<Card> cards; private JPanel cardPanel; private JButton shuffleButton; private JLabel messageLabel; public PokerGame() { super("Poker Game"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(WIDTH, HEIGHT); setLayout(new BorderLayout()); // initialize cards cards = new ArrayList<Card>(); for (Suit suit : Suit.values()) { for (Rank rank : Rank.values()) { cards.add(new Card(suit, rank)); } } // create card panel cardPanel = new JPanel(new GridLayout(NUM_ROWS, NUM_COLS)); cardPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); for (Card card : cards) { JLabel cardLabel = new JLabel(card.toString()); cardLabel.setFont(new Font("Arial", Font.BOLD, 20)); cardLabel.setHorizontalAlignment(JLabel.CENTER); cardLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); cardLabel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { JLabel label = (JLabel) e.getSource(); if (card.isSelected()) { label.setLocation(label.getX(), label.getY() + 20); } else { label.setLocation(label.getX(), label.getY() - 20); } card.setSelected(!card.isSelected()); } }); cardPanel.add(cardLabel); } // create shuffle button shuffleButton = new JButton("Shuffle"); shuffleButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Collections.shuffle(cards); for (int i = 0; i < NUM_CARDS; i++) { JLabel label = (JLabel) cardPanel.getComponent(i); label.setLocation((i % NUM_COLS) * 60, (i / NUM_COLS) * 80); cards.get(i).setSelected(false); } } }); // create message label messageLabel = new JLabel("Click on a card to select it."); messageLabel.setFont(new Font("Arial", Font.PLAIN, 16)); messageLabel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // add components to frame JPanel buttonPanel = new JPanel(new FlowLayout()); buttonPanel.add(shuffleButton); add(buttonPanel, BorderLayout.NORTH); add(cardPanel, BorderLayout.CENTER); add(messageLabel, BorderLayout.SOUTH); } public static void main(String[] args) { PokerGame game = new PokerGame(); game.setVisible(true); } } enum Suit { HEARTS, DIAMONDS, CLUBS, SPADES; } enum Rank { ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING; } class Card { private Suit suit; private Rank rank; private boolean isSelected; public Card(Suit suit, Rank rank) { this.suit = suit; this.rank = rank; this.isSelected = false; } public Suit getSuit() { return suit; } public Rank getRank() { return rank; } public boolean isSelected() { return isSelected; } public void setSelected(boolean isSelected) { this.isSelected = isSelected; } @Override public String toString() { return rank + " of " + suit; } } ``` 这是一个基本的实现,你可以根据需要添加更多的功能和组件来丰富游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值