要求!
- 里面有一个大体框架按框架写
- 还有文件包[里面是扑克牌样式]
- 要有注释,俺真的看不懂
[待会会把大体代码贴出来]
不好意思哈,由于时间问题,我这边只能帮你写到这里了,后续功能您可以自己新增编写。
仅供参考代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import java.util.List;
public class MyFrame1 {
private Card[] playerCards = new Card[13];
private Set<String> computerHand = new HashSet<>(); // 机器人手牌集合
private JTextArea infoTextArea;
public MyFrame1() {
JFrame f = new JFrame("使用标签作窗体背景");
Toolkit tk = Toolkit.getDefaultToolkit();
int w = (int) tk.getScreenSize().getWidth();
int h = (int) tk.getScreenSize().getHeight();
Container cp = f.getContentPane();
cp.setLayout(null);
ImageIcon bj = new ImageIcon("C:\\Users\\caozhen\\Desktop\\扑克\\扑克牌\\img\\bj.jpg");
JLabel jl = new JLabel(bj);
jl.setBounds(0, 0, w, h);
cp.add(jl);
JLayeredPane jp = f.getLayeredPane();
// 添加玩家信息
JLabel playerLabel = new JLabel("玩家:学号123,姓名张三");
playerLabel.setBounds(10, 10, 200, 20);
jp.add(playerLabel, new Integer(100));
// 添加开始按钮
JButton startButton = new JButton("开始");
startButton.setBounds(10, 40, 80, 30);
jp.add(startButton, new Integer(100));
// 初始化玩家和机器玩家的牌
initializeCards();
// 添加信息提示的多文本框
infoTextArea = new JTextArea();
infoTextArea.setBounds(w - 250, 100, 200, 400);
infoTextArea.setEditable(false);
jp.add(infoTextArea, new Integer(100));
// 为每个按钮添加监听器
for (int i = 0; i < 13; i++) {
final Card playerCard = playerCards[i];
ImageIcon pkImg = playerCard.getImage();
JButton jb = new JButton(pkImg);
jb.setBounds(100 + 80 * i, 500, 134, 201);
jp.add(jb, new Integer(i));
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 处理按钮点击事件
handleButtonClick(playerCard);
}
});
}
for (int i = 0; i < 13; i++) {
Card computerCard = getRandomCard();
computerHand.add(computerCard.getName()); // 将机器人的手牌加入集合
ImageIcon pkImg = computerCard.getImage();
JButton jb = new JButton(pkImg);
jb.setBounds(100 + 80 * i, 100, 134, 201);
jp.add(jb, new Integer(i + 13));
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 处理机器玩家按钮点击事件
handleButtonClick(computerCard);
}
});
}
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void initializeCards() {
// 初始化玩家的牌
for (int i = 0; i < 13; i++) {
playerCards[i] = getRandomCard();
}
}
private void handleButtonClick(Card card) {
// 处理按钮点击事件
System.out.println("Button Clicked: " + card.getName());
// 在信息提示框中显示出牌信息
infoTextArea.append("玩家出牌:" + card.getName() + "\n");
// 机器人出牌
Card computerCard = getRandomComputerCard();
infoTextArea.append("机器玩家出牌:" + computerCard.getName() + "\n");
}
private Card getRandomCard() {
String[] suits = {"fang", "hei", "hong", "mei"};
String suit = suits[new Random().nextInt(suits.length)];
int number = new Random().nextInt(13) + 1;
String cardName = suit + number;
String imagePath = "C:\\Users\\caozhen\\Desktop\\扑克\\扑克牌\\img\\" + suit + number + ".jpg";
return new Card(cardName, new ImageIcon(imagePath));
}
private Card getRandomComputerCard() {
// 从机器人手牌集合中随机选一张牌
List<String> handList = new ArrayList<>(computerHand);
String randomCardName = handList.get(new Random().nextInt(handList.size()));
return new Card(randomCardName, null); // 这里暂时不设置图像
}
public static void main(String[] args) {
MyFrame1 mf = new MyFrame1();
}
private static class Card {
private String name;
private ImageIcon image;
public Card(String name, ImageIcon image) {
this.name = name;
this.image = image;
}
public String getName() {
return name;
}
public ImageIcon getImage() {
return image;
}
}
}