斗地主小游戏(JAVA实现)

本文通过一个斗地主小游戏的实现,讲解了如何使用ArrayList和Collections进行集合操作,包括洗牌、发牌等步骤。代码中包含了详细的注释,便于理解。最后展示了程序的运行结果和对玩家手中牌的排序。
摘要由CSDN通过智能技术生成

hello,我是忘鱼。

前言

     斗地主小游戏,属于Collection体系综合案例,学习帮助我们加深理解。

一、案例所需要具备知识

    常用Arraylist常用操作,和一些基础知识。代码注释很详细,简单但很重要。

二、代码

代码如下(示例):

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

//斗地主游戏
public class GameDemo {
//    存取全部牌
public static List<Cards> allcards=new ArrayList<>();
//数量确定类型确定使用数组
static {
    String[] sizes={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
    String[] colors={"♣","♦","♥","♠"};
    int index=0;
//    List继承了collection,使用foreach循环简单;
    for (String size : sizes) {
        index++;
        for (String color : colors) {
//            使用变量接取
            Cards c=new Cards(size,color,index);
            allcards.add(c);
        }
    }
    Cards c1=new Cards("","小🃏",++index);
    Cards c2=new Cards("","大🃏",++index);
    Collections.addAll(allcards,c1,c2);
    System.out.println("新牌是:"+allcards);
}
    public static void main(String[] args) {
//洗牌操作使用shuffle
        Collections.shuffle(allcards);
        System.out.println("洗牌后:"+allcards);
//        定义三个player,使用集合简单
        List<Cards> player01=new ArrayList<>();
        List<Cards> player02=new ArrayList<>();
        List<Cards> player03=new ArrayList<>();
//       发牌,留三张底牌
        for (int i = 0; i < allcards.size()-3; i++) {

            Cards c=allcards.get(i);
//            求3的余数,0,1,2
            if(i%3==0){
                player01.add(c);
            }else if(i%3==1){
                player02.add(c);

            }else if(i%3==2){
                player03.add(c);
            }
        }
//        进行大小排序;,使用方法简单;
       sort(player01);
       sort(player02);
       sort(player03);
        System.out.println("玩家1"+player01);
        System.out.println("玩家2"+player02);
        System.out.println("玩家3"+player03);
//        还有三张底牌,差点忘了,直接截取用sublist   包前不包后
       List<Cards> lastthreeCards=allcards.subList(allcards.size()-3,allcards.size());
        System.out.println("底牌三张"+lastthreeCards);
    }

    private static void sort(List<Cards> playercards) {

    Collections.sort(playercards, new Comparator<Cards>() {
        @Override
        public int compare(Cards o1, Cards o2) {
            return o2.getIndex()- o1.getIndex();
        }
    });
    }
}
public class Cards {
    private String size;
    private String color;
//    定义牌自身属性大小判断本身大小
     private int index;
    public Cards() {
    }

    public Cards(String size, String color, int index) {
        this.size = size;
        this.color = color;
        this.index = index;
    }

    public String getSize() {
        return size;
    }

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

    public String getColor() {
        return color;
    }

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

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    @Override
    public String toString() {
       return (size+color);
    }
}

2.运行结果


 

总结

     给个赞吧!!亲亲

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值