天天看點

java實作鬥地主發牌,發三個人牌,并留出三張底牌

方法1:

package com.oracle.pc;

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

public class FaPai
{

	public static void main(String[] args)
	{
		// 擷取牌
		ArrayList<String> pai = getPai();
		// 洗牌
		Collections.shuffle(pai);
		// 發牌
		ArrayList<String> user1 = new ArrayList<>();
		ArrayList<String> user2 = new ArrayList<>();
		ArrayList<String> user3 = new ArrayList<>();

		ArrayList<String> diapi = fapai(pai, user1, user2, user3);

		// 看牌

		System.out.println("user1" + user1);
		System.out.println("user2" + user2);
		System.out.println("user3" + user3);

		System.out.println(diapi);

	}

	// 發三個人牌
	public static ArrayList<String> fapai(ArrayList<String> pai, ArrayList<String> user1, ArrayList<String> user2,
			ArrayList<String> user3)
	{
		ArrayList<String> dipai = new ArrayList<>();
		for (int i = 0; i < 51; i++)
		{
			String s = pai.get(i);
			if (i % 3 == 0)
			{
				user1.add(s);
			}
			else if (i % 3 == 1)
			{
				user2.add(s);
			}
			else
			{
				user3.add(s);
			}
		}
		// 傳回底牌集合

		dipai.add(pai.get(51));
		dipai.add(pai.get(52));
		dipai.add(pai.get(53));
		return dipai;
	}

	// 模拟出所有牌面值 存放到集合中
	public static ArrayList<String> getPai()
	{
		// 定義牌面值集合
		ArrayList<String> list = new ArrayList();
		// 定義花色
		ArrayList<String> huase = new ArrayList();
		huase.add("黑桃");
		huase.add("紅桃");
		huase.add("梅花");
		huase.add("方塊");
		// 定義字面值
		ArrayList<String> zimianvalue = new ArrayList<String>();
		for (int i = 2; i <= 10; i++)
		{
			zimianvalue.add(i + "");
		}
		zimianvalue.add("J");
		zimianvalue.add("Q");
		zimianvalue.add("K");
		zimianvalue.add("A");
		// 花色和字面值糾纏
		for (String s : zimianvalue)
		{
			for (String ss : huase)
			{
				list.add(ss + s);
			}
		}

		list.add("大王");
		list.add("小王");
		return list;
	}
}

           

運作結果:

java實作鬥地主發牌,發三個人牌,并留出三張底牌

方法2:

建立一個card屬性類

package com.oracal.core;

public class Card
{
	//點數
    private  int num;
    //花色
    private  String color;
    //名稱
    private String  name;
    
	public int getNum()
	{
		return num;
	}
	public void setNum(int num)
	{
		this.num = num;
	}
	public String getColor()
	{
		return color;
	}
	public void setColor(String color)
	{
		this.color = color;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public Card(int num, String color, String name)
	{
		super();
		this.num = num;
		this.color = color;
		this.name = name;
	}
	public Card()
	{
		super();
		// TODO Auto-generated constructor stub
	}
    
    
    
    
}

           

再建立一個CardStudy類

package com.oracal.core;

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



public class CardStudy
{
	public static  void shuffle()
	{
		List cardList=new ArrayList(); //
		//準備一副牌
		String[] colors={"紅桃","黑桃","梅花","方片"};
		String [] nums={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
		for(int i=0;i<colors.length;i++)
		{
			for(int j=0;j<nums.length;j++)
			{
				Card card=new Card(j+1,colors[i],colors[i]+nums[j]);
				cardList.add(card);
			}
			
		}
		Card xiaowang=new Card(15,"黑色","小王");
		Card dawang=new Card(16,"紅色","大王");
		cardList.add(xiaowang);
		cardList.add(dawang);
		//洗牌 把順序打亂
	    Collections.shuffle(cardList,new Random(10));		
		//發牌 3個集合 底牌  
	    List allList=new ArrayList();
	   
	    List one=cardList.subList(0,17);
	    List two=cardList.subList(17,34);
	    List three=cardList.subList(34,51);
	    List dizhu=cardList.subList(51, 54);
	    
	    //看牌
	    System.out.println("玩家1:");
	    Iterator iterator = one.iterator();
		while(iterator.hasNext())
		{
			Card c=(Card)iterator.next();
			System.out.print(c.getName()+"\t");
			
		}
		System.out.println();
		System.out.println("玩家2:");
		  Iterator iterator2 = two.iterator();
			while(iterator2.hasNext())
			{
				Card c=(Card)iterator2.next();
				System.out.print(c.getName()+"\t");
			}
			System.out.println();
			System.out.println("玩家3:");
			 Iterator iterator3 = three.iterator();
				while(iterator3.hasNext())
				{
					Card c=(Card)iterator3.next();
					System.out.print(c.getName()+"\t");
				}
				System.out.println();
				System.out.println("底牌:");
				 Iterator iterator4 = dizhu.iterator();
					while(iterator4.hasNext())
					{
						Card c=(Card)iterator4.next();
						System.out.print(c.getName()+"\t");
					}
					
	}
public static void main(String[] args)
{
	shuffle();
}
}


           

運作結果:

java實作鬥地主發牌,發三個人牌,并留出三張底牌