Java模拟玩家洗牌发牌小程序

参考了网上了一些内容,自己实现了一个模拟玩家洗牌、发牌的小程序,若有问题欢迎提出,希望我们可以一起进步。QQ:767696856

(其中洗牌是直接通过集合类中的shuffle实现)

package com.cute.card;

/*
 * 手牌
 */
public class Card {
	public String num;  //牌的数字
	public String suit;  //花色
	
	public Card(String num,String suit){
		this.num = num;
		this.suit = suit;
	}
	
	@Override
	public String toString() {
		String str = suit + " " + num;
		return str;
	}
}

 

package com.cute.card;

/*
 * 玩家
 */
import java.util.ArrayList;
import java.util.List;

public class Player {
	public String name;  //玩家姓名
	public List<Card> cards;  //存储玩家手牌
	
	public Player(String name) {
		this.name = name;
	}
	
	//获取手牌
	public void getCard(Card card){
		if(cards == null) cards = new ArrayList<Card>();
		cards.add(card);
	}
	
	public String toString(){
		return name + ":" + cards.toString();
	}
}

 

package com.cute.card;

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

public class DeskOfCard {
	
	List<Card> cards;
	
	//创建一副手牌
	public void initCard(){
		String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
		String[] suits = {"方块","梅花","红桃","黑桃"};
		String[] jokers = {"小王","大王"};
		
		cards = new ArrayList<Card>();
		//先创建四种花色的牌
		for(int i = 0; i<52; i++){
			cards.add(new Card(nums[i%13],suits[i/13]));
		}
		
		//再加上大小王
		cards.add(new Card("",jokers[0]));
		cards.add(new Card("",jokers[1]));
	}
	
	
	public static void main(String[] args) {
		DeskOfCard test = new DeskOfCard();
		test.initCard();  //初始化
		
		Collections.shuffle(test.cards);  //洗牌
		
		//创建玩家
		Player pl1 = new Player("Cute");
		Player pl2 = new Player("Jane");
		Player pl3 = new Player("Katter");
		
		//发牌
		for(int i=0; i<54; i++){
			if(i%3 == 0){
				pl1.getCard(test.cards.get(i));
			}else if(i%3 == 1){
				pl2.getCard(test.cards.get(i));
			}else if(i%3 == 2){
				pl3.getCard(test.cards.get(i));
			}
		}
		
		System.out.println("玩家拿到的手牌为:");
		System.out.println(pl1.toString());
		System.out.println(pl2.toString());
		System.out.println(pl3.toString());
	}
}


运行结果:

 

 

 

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Halo 咯咯

有你的支持我会更加努力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值