Java学习(二)案例—斗地主

斗地主游戏设计

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class GameDemo {

    /**
     目标:设计一个斗地主的游戏。
     总共有54张牌。"3","4","5","6","7","8","9","10","J","Q","K","A","2"
     小王:🃏;大王:🃏
     花色: "♠", "♥", "♣", "♦"
     组合4种花色,大小王各一张。还要定义牌的大小规则。

     功能:
     1.定义一幅牌。
     2.洗牌。
     3.3个玩家
     4.发牌。
     */



    //1.定义一个类,存放牌对象

    //2.定义一个静态集合,存放54张牌
    //List<Card> cards=new ArrayList<>();
   public static List<Card> cards=new ArrayList<>();

    //3.预先准备好牌并洗好牌,因此用静态代码块定义
    static {
        //定义数组分别存放牌的标签和花色
        String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        String[] shape={"♠", "♥", "♣", "♦"};

        //将牌进行组合
        int size=0;
        for (int i = 0; i < number.length; i++) {
            size++;//牌的大小规则,方便后面的排序
            for (int i1 = 0; i1 < shape.length; i1++) {
                //获取每一次组合的牌封装成牌对象
                Card card=new Card(number[i],shape[i1],size);
                //将牌放到集合里边
                cards.add(card);
            }
        }
        //加入小王和大王
        Card c1=new Card("","🃏",++size);
        Card c2=new Card("","🃏",++size);
        Collections.addAll(cards,c1,c2);
        System.out.println("初始牌"+cards);
        //54张牌准备完毕

        //4.洗牌
        Collections.shuffle(cards);
        System.out.println("洗过的牌"+cards);
    }


    public static void main(String[] args) {
        //5.发牌,先取出3张地主牌,每人17张,
        //准备三个玩家,定义成集合形式
        //最后三张牌一起打包
        List<Card> p1=cards.subList(0,17);
        List<Card> p2=cards.subList(17,34);
        List<Card> p3=cards.subList(34,51);
        List<Card> last=cards.subList(51,54);
//        System.out.println(p1);
//        System.out.println(p2);
//        System.out.println(p3);
//        System.out.println(last);

        //6.帮玩家排序
        //定义一个方法
        sortCard(p1);
        sortCard(p2);
        sortCard(p3);
        System.out.println(p1);
        System.out.println(p2);
        System.out.println(p3);
        System.out.println(last);

    }

    private static void sortCard(List<Card> cards) {
        Collections.sort(cards, new Comparator<Card>() {
            @Override
            public int compare(Card o1, Card o2) {
                return o1.getSize()- o2.getSize();
            }
        });
    }


}


public class Card {
    private  String number;
    private   String shape;
    private  int size;

    public Card() {
    }

    public Card(String number, String shape, int size) {
        this.number = number;
        this.shape = shape;
        this.size = size;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getShape() {
        return shape;
    }

    public void setShape(String shape) {
        this.shape = shape;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    @Override
    public String toString() {
        return shape+number;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值