BlackJack--21点扑克游戏Java实现

本次面向对象实践课课程作业要求实现一个blackJack–21点扑克游戏。

游戏规则自行了解,还是较有趣味性的。

一、游戏演示

image-20201101131015005

image-20201101131031658

image-20201101131046816

二、设计类图:

图示  描述已自动生成

三、代码实现

1、牌与牌堆类
/**
 * 扑克花色
 */
public enum Color {
   
    DIAMND, //方块
    HEART,  //红心
    CLUB,   //梅花
    SPADE   //黑桃
}
public class Card {
   
    private int point;
    private Color color;


    public int getPoint() {
   
        return point;
    }

    public void setPoint(int point) {
   
        this.point = point;
    }

    public Color getColor() {
   
        return color;
    }

    public void setColor(Color color) {
   
        this.color = color;
    }

    @Override
    public String toString() {
   
        return "Card{" +
                "point=" + point +
                ", color=" + color +
                '}';
    }

    //将花色英文转成中文
    public String transferColor(){
   
        switch (color){
   
            case SPADE:
                return "方块";
            case HEART:
                return "红心";
            case CLUB:
                return "梅花";
            case DIAMND:
                return "黑桃";
        }
        return "";
    }

    //将点数1~13转成A~K
    public String transferPoint(){
   
        if(point <= 10 && point >1){
   
            return Integer.toString(point);
        } else {
   
            switch (point){
   
                case 1 :
                    return "A";
                case 11 :
                    return "J";
                case 12 :
                    return "Q";
                case 13 :
                    return "K";
            };
        }
        return "";
    }
}

import java.util.Random;

public class Deck {
   
    private Card [] cards;
    private Integer index;
    private Random random;
    //初始化牌组
    public Deck() {
   
        random = new Random();
        index = 0;
        cards = new Card[52];
        //牌组按方块、红心、梅花、黑桃0~13生成
        for (int i = 0; i < 52; i++) {
   
            cards[i] = new Card();
            cards[i].setPoint(i % 13 + 1);
            switch (i / 13){
   
                case 0 :
                    cards[i].setColor(Color.SPADE);
                    break;
                case 1 :
                    cards[i].setColor(Color.HEART);
                    break;
                case 2 :
                    cards[i].setColor(Color.CLUB);
                    break;
                case 3 :
                    cards[i].setColor(Color.DIAMND);
            }
        }
    }

    //使用shuffle算法洗牌
    public void shuffle(){
   
        for(int i =1;i <= 52;i ++){
   
            int randId = random.nextInt(i);
            swap(randId, i - i);
        }
        index = 0;
    }

    //发牌
    public Card getOne(){
   
        //牌不够
        if(index == 53){
   
            return null;
        }
        return cards[index ++];
    }

    private void swap(int randId, int i) {
   
        Card temp = cards[i];
        cards[i] = cards[randId];
        cards[randId] =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值