java控制台小程序(斗地主发牌功能)

java控制台小程序(斗地主发牌功能)

近期时间较少不做详细介绍了,请直接观察注释!

效果:

(代码简陋,不喜勿喷TVT)在这里插入图片描述

代码:

Card类:
/**
 * 牌堆
 * @author ASUS
 *
 */
public class Card {

	/**点数*/
	private String count;
	/**大小*/
	private int size;
	
	public Card() {
		// TODO Auto-generated constructor stub
	}

	public Card(String count, int size) {
		super();
		this.count = count;
		this.size = size;
	}

	public String getCount() {
		return count;
	}

	public void setCount(String count) {
		this.count = count;
	}

	public int getSize() {
		return size;
	}

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

BossCard类:
/**
 * 大小王牌
 * @author ASUS
 *
 */
public class BossCard extends Card{
	/**大小王*/
	private String count = super.getCount();
	/**实际大小*/
	private int size = super.getSize();

	public BossCard(String count,int size) {
		super(count,size);
	}

	@Override
	public String toString() {
		return count;
	}
	
	
}
NormalCard类:
/**
 * 普通牌
 * @author ASUS
 *
 */
public class NormalCard extends Card{
	/**花色*/
	private String color;
	/**点数*/
	private String count = super.getCount();
	/**真正大小*/
	private int size = super.getSize();
	
	public NormalCard() {
		
	}
	
	public NormalCard(String count,int size,String color) {
		super(count,size);
		this.color = color;
	}



	public String getColor() {
		return color;
	}

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

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

	
	
}
Player类:
/**
 * 玩家类
 * @author ASUS
 *
 */
public class Player {
	/**玩家id*/
	private int id;
	/**玩家身份*/
	private String nickname = "农民";
	/**玩家手牌*/
	private List<Card> card;
	/**是否是地主*/
	private boolean isBoss = false;
	
	public Player() {
		// TODO Auto-generated constructor stub
	}
	

	public Player(int id) {
		super();
		this.id = id;
	}


	public Player(int id, String nickname, List<Card> card, boolean isBoss) {
		super();
		this.id = id;
		this.nickname = nickname;
		this.card = card;
		this.isBoss = isBoss;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public List<Card> getCard() {
		return card;
	}

	public void setCard(List<Card> card) {
		this.card = card;
	}

	public boolean isBoss() {
		return isBoss;
	}

	public void setBoss(boolean isBoss) {
		this.isBoss = isBoss;
	}

	@Override
	public String toString() {
		return "玩家"+id+"\n"+"身份:"+nickname+"\n"+"地主:"+isBoss+"\n"+"手牌:"+card;
	
	}
}
Landlords类(功能实现的类):
public class Landlords {

	/**
	 * 添加牌堆
	 */
	List<Card> card = new ArrayList<>();
	/**玩家集合*/
	List<Player> player = new ArrayList<>();
	Random r = new Random();
	/**地主索引*/
	private int index;
	/**初始化游戏*/
	{	/**添加普通牌*/
		String[] count = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
		String[] color = {"黑桃","红心","梅花","方块"};
		for (int i = 0; i < color.length; i++) {
			for (int j = 0; j < count.length; j++) {
				card.add(new NormalCard(count[j],j,color[i]));
			}
		}
		/**添加大小王牌*/
		card.add(new BossCard("小王", 13));
		card.add(new BossCard("大王", 14));
		/**创建玩家*/
		player.add(new Player(1));
		player.add(new Player(2));
		player.add(new Player(3));
		
	}
	/**
	 * 洗牌功能
	 */
	public void getRandomCard() {
		Collections.shuffle(card);
	}
	/**
	 * 发牌功能
	 */
	public void giveCard() {
		/**随机一个地主*/
		int i = r.nextInt(3);
		player.get(i).setBoss(true);
		player.get(i).setNickname("地主");
		/**分配牌堆*/
		List<Card> c0 = new ArrayList<>();//玩家一手牌
		List<Card> c1 = new ArrayList<>();//玩家二手牌
		List<Card> c2 = new ArrayList<>();//玩家三手牌
		List<Card> c3 = new ArrayList<>();//地主牌
		/**分发手牌*/
		for (int j = 0; j < card.size(); j++) {
			if(j < 3) {
				c0.add(card.get(j));
			}else if(j%3 == 0) {
				c1.add(card.get(j));
			}else if(j%3 == 1) {
				c2.add(card.get(j));
			}else if(j%3 == 2) {
				c3.add(card.get(j));
			}
		}
		player.get(0).setCard(c1);
		player.get(1).setCard(c2);
		player.get(2).setCard(c3);
		/**找出地主*/
		for (int j = 0; j < player.size(); j++) {
			if(player.get(j).isBoss() == true) {
				index = j;
			}
		}
		/**地主牌添加到地主手牌*/
		for (Card c4 : c0) {
			player.get(index).getCard().add(c4);
		}
		/**手牌排序*/
		for (int j = 0; j < player.size(); j++) {
			player.get(j).getCard().sort(new MyComparator());
		}
			
		}
	/**查看手牌*/
	public void showAll() {
		player.forEach(p->System.out.println(p));
	}
	/**按手牌真实大小排序*/
	class MyComparator implements Comparator<Card>{

		@Override
		public int compare(Card o1, Card o2) {
			
			return o1.getSize()-o2.getSize();
		}
		
	}
	
	public static void main(String[] args) {
		Landlords l = new Landlords();
		l.getRandomCard();
		l.giveCard();
		l.showAll();
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值