blackjack java
时间: 2023-12-05 20:41:27 浏览: 38
Blackjack是一种流行的纸牌游戏,也称为21点。在Java中,可以使用图形用户界面(GUI)创建一个Blackjack桌面应用程序。以下是一个简单的Blackjack Java桌面应用程序的示例,其中包括一个平台和三个玩家:“Curly”(您),“Mo”和“Larry”:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Blackjack extends JFrame implements ActionListener {
private Deck deck;
private Player[] players;
private JButton hitButton, stayButton, newButton;
private JLabel[] playerLabels, scoreLabels;
public Blackjack() {
// 初始化牌堆和玩家
deck = new Deck();
players = new Player[3];
players[0] = new Player("Curly");
players[1] = new Player("Mo");
players[2] = new Player("Larry");
// 创建GUI
setTitle("Blackjack");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
hitButton = new JButton("Hit");
hitButton.addActionListener(this);
buttonPanel.add(hitButton);
stayButton = new JButton("Stay");
stayButton.addActionListener(this);
buttonPanel.add(stayButton);
newButton = new JButton("New Game");
newButton.addActionListener(this);
buttonPanel.add(newButton);
add(buttonPanel, BorderLayout.SOUTH);
JPanel playerPanel = new JPanel();
playerPanel.setLayout(new GridLayout(3, 2));
playerLabels = new JLabel[3];
scoreLabels = new JLabel[3];
for (int i = 0; i < 3; i++) {
playerLabels[i] = new JLabel(players[i].getName() + ": ");
playerPanel.add(playerLabels[i]);
scoreLabels[i] = new JLabel("0");
playerPanel.add(scoreLabels[i]);
}
add(playerPanel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == hitButton) {
// 玩家点击“Hit”按钮
players[0].addCard(deck.dealCard());
updateGUI();
if (players[0].getScore() > 21) {
// 玩家破产
JOptionPane.showMessageDialog(this, "You busted!");
newGame();
}
} else if (e.getSource() == stayButton) {
// 玩家点击“Stay”按钮
int dealerScore = playDealer();
if (dealerScore > 21 || players[0].getScore() > dealerScore) {
// 玩家获胜
JOptionPane.showMessageDialog(this, "You win!");
} else if (players[0].getScore() == dealerScore) {
// 平局
JOptionPane.showMessageDialog(this, "Push!");
} else {
// 玩家失败
JOptionPane.showMessageDialog(this, "You lose!");
}
newGame();
} else if (e.getSource() == newButton) {
// 玩家点击“New Game”按钮
newGame();
}
}
private void newGame() {
// 开始新游戏
deck.shuffle();
for (int i = 0; i < 3; i++) {
players[i].clearHand();
players[i].addCard(deck.dealCard());
players[i].addCard(deck.dealCard());
}
updateGUI();
}
private int playDealer() {
// 庄家的回合
while (players[1].getScore() < 17) {
players[1].addCard(deck.dealCard());
}
while (players[2].getScore() < 17) {
players[2].addCard(deck.dealCard());
}
return players[1].getScore();
}
private void updateGUI() {
// 更新GUI
for (int i = 0; i < 3; i++) {
playerLabels[i].setText(players[i].getName() + ": ");
scoreLabels[i].setText(Integer.toString(players[i].getScore()));
}
}
public static void main(String[] args) {
new Blackjack();
}
}
```