Java实现模拟斗地主发牌

分析

1.创建一个HashMap集合(因为牌的编号和牌的内容是一对键值对,所以用HashMap集合)

  • 2.创建一个ArrayList集合(将每一张牌所对应的编号存储起来,作为HashMap键值对里面的键)
  • 3.创建牌(包括花色,点数)和编号(index)
  • 4.从0开始向ArrayList里面存储编号,并存储对应的牌,同时向ArrayList里存储编号
  • 5.洗牌(洗牌时洗的是编号)
  • 6.发牌(发牌发的也是编号,为了保证排序,用TreeSet集合接收)
  • 7.看牌(遍历TreeMap集合,获取编号,到HashMap里去找相应的牌)

代码实现

import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Collections;
import java.util.HashMap;

public class DouDiZhuLicensing {
   public static void main(String[] args) {
	HashMap hs=new HashMap();
	//创建牌盒
	ArrayList array=new ArrayList();
	
	//创建花色数组和点数数组
	String color[]= {"♥","♠","♣","♦"};
	String num[]= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
	
	//从0开始往HashMap里面存储编号,并存储对应的牌,同时向ArrayList里面存储编号即可
	
	//创建编号索引
	int index=0;
	
	//向HashMap里存牌
	for(String number:num) {
		for(String colors:color) {
			String card=colors.concat(number);
		   hs.put(index, card);
		   array.add(index);
		   index++;
		}
	}
	hs.put(index, "小王");
	array.add(index);
	index++;
	hs.put(index, "大王");
	array.add(index);
	
	//洗牌(用shuffle方法随机array里的编号)
	Collections.shuffle(array);
	
	//发牌,创建TreeSet集合
	TreeSet player1=new TreeSet();
	TreeSet player2=new TreeSet();
	TreeSet player3=new TreeSet();
	TreeSet dipai=new TreeSet();
	for(int x=0;x=array.size()-3) {
			dipai.add(array.get(x));
		}else if(x%3==1) {
			player1.add(array.get(x));
		}else if(x%3==2) {
			player2.add(array.get(x));
		}else if(x%3==0) {
			player3.add(array.get(x));
		}
	}
	LookCard("地主", player1, hs);
	LookCard("农民1", player2, hs);
	LookCard("农名2", player3, hs);
	LookCard("底牌", dipai, hs);
}
   //看牌功能(根据TreeSet里存的牌的编号去HashMap里找相应的牌)
   public static void LookCard(String name,TreeSet ts,HashMap hm) {
	   System.out.print(name+"的牌是 ");
	   for(Integer key:ts) {
		   String value=hm.get(key);
		   System.out.print(value+" ");
	   }
	   System.out.println();
   }
}

运行结果

Java实现模拟斗地主发牌_第1张图片

你可能感兴趣的:(Java实现模拟斗地主发牌)