参考了网上了一些内容,自己实现了一个模拟玩家洗牌、发牌的小程序,若有问题欢迎提出,希望我们可以一起进步。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());
}
}
运行结果: