用java设计一个21点小游戏毕业答辩
时间: 2024-03-24 16:40:13 浏览: 16
好的,我可以为您提供一个基本的21点小游戏的Java代码实现。具体实现方式如下:
1.首先,我们需要定义一个Card类作为扑克牌,它具有点数和花色两种属性,代码如下:
```
public class Card {
private int point; // 点数
private String suit; // 花色
public Card(int point, String suit) {
this.point = point;
this.suit = suit;
}
public int getPoint() {
return point;
}
public String getSuit() {
return suit;
}
}
```
2.然后,我们需要设计一个Deck类,用于存储一副扑克牌。Deck类具有洗牌和发牌两种行为,代码如下:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Deck {
private List<Card> cards;
public Deck() {
cards = new ArrayList<>();
for (int i = 1; i <= 13; i++) {
cards.add(new Card(i, "Spade"));
cards.add(new Card(i, "Heart"));
cards.add(new Card(i, "Diamond"));
cards.add(new Card(i, "Club"));
}
}
public void shuffle() {
Collections.shuffle(cards);
}
public Card deal() {
if (cards.isEmpty()) {
return null;
}
return cards.remove(0);
}
}
```
3.接下来,我们需要设计一个Player类,用于表示玩家,在游戏中具有抽牌和计算点数的功能,代码如下:
```
import java.util.ArrayList;
import java.util.List;
public class Player {
private List<Card> hand;
public Player() {
hand = new ArrayList<>();
}
public void addCard(Card card) {
hand.add(card);
}
public int getTotalPoint() {
int total = 0;
boolean hasAce = false;
for (Card card : hand) {
if (card.getPoint() == 1) {
hasAce = true;
}
total += Math.min(card.getPoint(), 10);
}
if (hasAce && total + 10 <= 21) {
total += 10;
}
return total;
}
}
```
4.最后,我们需要设计一个Game类,用于控制游戏流程和计算胜负。在Game类中,我们需要创建一副扑克牌和两个玩家对象,然后通过控制抽牌和计算点数的顺序来实现游戏的流程,代码如下:
```
import java.util.Scanner;
public class Game {
private Deck deck;
private Player player;
private Player dealer;
public Game() {
deck = new Deck();
player = new Player();
dealer = new Player();
}
public void start() {
deck.shuffle();
player.addCard(deck.deal());
dealer.addCard(deck.deal());
player.addCard(deck.deal());
dealer.addCard(deck.deal());
System.out.println("Player: " + player.getTotalPoint());
System.out.println("Dealer: " + dealer.getTotalPoint());
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.print("Do you want to hit or stand? ");
String input = scanner.nextLine();
if (input.equalsIgnoreCase("hit")) {
player.addCard(deck.deal());
System.out.println("Player: " + player.getTotalPoint());
if (player.getTotalPoint() > 21) {
System.out.println("Player busts.");
System.out.println("Dealer wins.");
return;
}
} else if (input.equalsIgnoreCase("stand")) {
break;
} else {
System.out.println("Invalid input. Please try again.");
}
}
while (dealer.getTotalPoint() < 17) {
dealer.addCard(deck.deal());
}
System.out.println("Player: " + player.getTotalPoint());
System.out.println("Dealer: " + dealer.getTotalPoint());
if (dealer.getTotalPoint() > 21) {
System.out.println("Dealer busts.");
System.out.println("Player wins.");
} else if (player.getTotalPoint() > dealer.getTotalPoint()) {
System.out.println("Player wins.");
} else if (player.getTotalPoint() < dealer.getTotalPoint()) {
System.out.println("Dealer wins.");
} else {
System.out.println("Push.");
}
}
}
```
以上就是一个基本的21点小游戏的Java代码实现。您可以根据自己的需要进行修改和扩展。