用Java写一个21点小游戏并且解释代码
时间: 2024-01-25 10:05:07 浏览: 26
好的,我来为您解答。
21点游戏,也叫黑杰克,是一种非常经典的纸牌游戏。玩家需要通过抽牌的方式,让自己的牌点数尽量接近21点,但不能超过21点。其中,A牌可以看成1或11点,J、Q、K牌都算10点,其他牌按照牌面点数算。下面是用Java写的21点小游戏代码:
```java
import java.util.Scanner;
public class BlackJack {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int playerScore = 0; // 玩家得分
int dealerScore = 0; // 庄家得分
// 初始状态,玩家和庄家各发两张牌
for (int i = 0; i < 2; i++) {
playerScore += drawCard();
dealerScore += drawCard();
}
// 玩家开始抽牌
while (true) {
System.out.println("你的得分是:" + playerScore);
// 判断是否爆掉
if (playerScore > 21) {
System.out.println("你爆了,游戏结束!");
break;
}
// 询问玩家是否继续抽牌
System.out.print("是否抽牌?(Y/N) ");
String choice = input.nextLine();
if (choice.equalsIgnoreCase("Y")) {
playerScore += drawCard();
} else if (choice.equalsIgnoreCase("N")) {
break;
}
}
// 庄家开始抽牌
while (dealerScore < 17) {
System.out.println("庄家得分是:" + dealerScore);
dealerScore += drawCard();
}
// 判断输赢
if (dealerScore > 21) {
System.out.println("庄家爆了,你赢了!");
} else if (playerScore > dealerScore) {
System.out.println("你的得分是:" + playerScore);
System.out.println("庄家的得分是:" + dealerScore);
System.out.println("你赢了!");
} else if (playerScore == dealerScore) {
System.out.println("你的得分是:" + playerScore);
System.out.println("庄家的得分是:" + dealerScore);
System.out.println("平局!");
} else {
System.out.println("你的得分是:" + playerScore);
System.out.println("庄家的得分是:" + dealerScore);
System.out.println("你输了!");
}
}
// 抽一张牌,返回牌的点数
public static int drawCard() {
int[] cards = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10};
int index = (int) (Math.random() * cards.length);
return cards[index];
}
}
```
这个程序主要分为以下几个部分:
1.引入Scanner类,用于接收用户输入。
2.定义玩家得分和庄家得分的变量。
3.循环两次,让玩家和庄家各发两张牌,用drawCard()函数随机生成牌的点数,并将点数加到对应的得分变量中。
4.玩家开始抽牌,使用while循环实现。在循环中,先输出当前得分,然后判断是否爆掉。如果爆掉了,输出游戏结束,并跳出循环;否则提示玩家是否继续抽牌,如果选择抽牌,则继续调用drawCard()函数生成新牌的点数,并加到玩家得分变量中;如果选择不抽牌,则跳出循环。
5.庄家开始抽牌,同样使用while循环实现。在循环中,先输出当前得分,然后判断是否小于17点,如果小于17点,则继续调用drawCard()函数生成新牌的点数,并加到庄家得分变量中。
6.判断输赢。如果庄家的得分大于21点,则玩家赢;如果玩家的得分大于庄家的得分,则玩家赢;如果两者得分相等,则平局;否则玩家输。
7.drawCard()函数,用于随机生成一张牌,返回该牌的点数。
希望这个解答能够帮到您!