JAVA简单案例:斗地主

JAVA简单案例:斗地主

新建牌

扑克牌共有54张牌(分四种花色,每种花色有2~10,A,J,Q,K;除花色外还有大小王)。

  1. 首先建立牌组,可以用集合来新建牌组, pokes代表总的54张牌,colors代表四种花色,numbers代表 2~10,A,J,Q,K。
  2. 建立完牌组后我们要往里添加数据,我们把花色添加到colors中,把2~10,A,J,Q,K添加到numbers中,数字可以用for循环来添加
  3. 最后将colorsnumbers排列组合,写入到 pokes,同时不要忘了添加大小王。
// 关键代码
List<String> pokes=new ArrayList<>();
List<String > colors=new ArrayList<>();
List<String > numbers=new ArrayList<>();

colors.add("♥");
colors.add("♠");
colors.add("◇");
colors.add("♣");
numbers.add("A");
for(int i=2;i<=10;i++){
	numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");

for(String c:colors){
	for(String n:numbers){
		String pai=c+n;
		pokes.add(pai);
	}
}
pokes.add("大王");
pokes.add("小王");

洗牌

这里我们使用Collections.shuffle()来随机乱序。

// 关键代码
Collections.shuffle(pokes);

留底牌

首先新建一个集合来当做第牌组,再用for循环找出最后三张作为底牌。

// 关键代码
ArrayList<String > dipai=new ArrayList<>();

for(int i=0;i<pokes.size();i++){
            String pai=pokes.get(i);
            if(i>=51){
                dipai.add(pai);
            }

随机发牌

新建三个集合当做玩家,再给他们按顺序发牌。

// 关键代码
ArrayList<String> hh=new ArrayList<>();
ArrayList<String> dd=new ArrayList<>();
ArrayList<String> qq=new ArrayList<>();

for(int i=0;i<pokes.size();i++){
            String pai=pokes.get(i);
            if(i>=51){
                
            }else {
                if(i%3==0){
                    hh.add(pai);
                }else if (i%3==1){
                    dd.add(pai);
                }else {
                    qq.add(pai);
                }
            }

完整代码

下面展示完整代码。

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

public class DouDiZhu {
    public static void main(String[] args) {
        List<String> pokes=new ArrayList<>();
        List<String > colors=new ArrayList<>();
        List<String > numbers=new ArrayList<>();

        colors.add("♥");
        colors.add("♠");
        colors.add("◇");
        colors.add("♣");
        numbers.add("A");
        for(int i=2;i<=10;i++){
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("K");
        for(String c:colors){
            for(String n:numbers){
                String pai=c+n;
                pokes.add(pai);
            }
        }
        pokes.add("大王");
        pokes.add("小王");
        System.out.println(pokes);

        Collections.shuffle(pokes);
        System.out.println(pokes);

        ArrayList<String > dipai=new ArrayList<>();
        ArrayList<String> hh=new ArrayList<>();
        ArrayList<String> dd=new ArrayList<>();
        ArrayList<String> qq=new ArrayList<>();
        for(int i=0;i<pokes.size();i++){
            String pai=pokes.get(i);
            if(i>=51){
                dipai.add(pai);
            }else {
                if(i%3==0){
                    hh.add(pai);
                }else if (i%3==1){
                    dd.add(pai);
                }else {
                    qq.add(pai);
                }
            }
        }
        System.out.println(dipai);
        System.out.println(hh);
        System.out.println(dd);
        System.out.println(qq);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值