重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍java如何实现多人多牌数比较游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联服务项目包括富阳网站建设、富阳网站制作、富阳网页制作以及富阳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,富阳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到富阳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
具体实现步骤如下:
实现扑克Card类,用于储存扑克牌,1-13代表点数,4-1代表花色(黑桃,红桃,梅花,分块)
实现扑克列表CardList类,用于实现生成一副牌,洗牌,发牌的功能
实现玩家Player类,用于储存玩家信息
实现玩家列表PlayerList类,用于储存所有玩家信息,并且实现玩家洗牌、发牌、比较牌大小的方法
主方法Index05类,用于启动扑克游戏
Card.java
/** * */ package dk.card; /** * @author Administrator * 扑克类 */ public class Card implements Comparable{ private int number;//牌的点数--1到13 private int type;//牌的花色--4种花色:♠(黑桃):4 ♥(红桃):3 ♣(梅花):2 方块:1 public Card() { super(); } public Card(int number, int type){ if(number==1) number=14; this.number = number; this.type = type; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + number; result = prime * result + type; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Card other = (Card) obj; if (number != other.number) return false; if (type != other.type) return false; return true; } @Override public int compareTo(Card o) { if(this.number>o.number) return -1; else if(this.number o.type) return -1; else if(this.type CardList.java
package dk.card; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * @author Administrator * 牌表操作类 */ public class CardList { public static Listcardlist = new ArrayList (52);//储存扑克牌 public static List > poker;//储存发牌结果 //生成一副牌 public static void generateCard() { for(int i=1;i<=13;i++){ for(int j=1;j<=4;j++){ Card c = new Card(i,j); cardlist.add(c); } } } //打印一副牌 public static void printCardList(){ System.out.print("["); for(Card c:cardlist){ System.out.print(c.toString()+" "); } System.out.println("]"); } //洗牌 public static void shuffleCard(){ List scard = new ArrayList (52); Card c; Random random = new Random(); for(int i=1;i<=52;i++){ do{ c = cardlist.get(random.nextInt(52)); }while(scard.contains(c)); scard.add(c); } cardlist.clear(); cardlist = scard; printCardList(); } /** * 发牌 * @param i number of player * @param j number of card * @return */ public static List > dealCard(int i,int j){ try{ if(i<=1){ throw new Exception("发牌规则有误:玩家至少为2人,请重新定义规则!"); } if(i*j>52){ throw new Exception("发牌规则有误:牌数超出扑克张数,请重新定义规则!"); } poker = new ArrayList >(i);//储存玩家发到的牌 //生成玩家手中的牌列表 for(int h=0;h player_card_list = new ArrayList (j); poker.add(player_card_list); } //给每个玩家发牌 for(int k=0;k player_card_list = poker.get(d); Card card = getCard(); player_card_list.add(card); } } }catch(Exception e){ e.printStackTrace(); } return poker; } //抓取一张牌 public static Card getCard(){ return cardlist.remove(0); } //获取一位玩家的牌 public static ArrayList getPoker(){ return poker.remove(0); } public static void clear(){ cardlist.clear(); poker.clear(); printCardList(); } } Player.java
/** * */ package dk.card; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Administrator * 玩家类 */ public class Player implements Comparable{ private String id;//玩家id private String name;//玩家姓名 private List poker;//玩家手牌 private Card max;//玩家最大的牌 public Player(String id ,String name){ this.id = id; this.name = name; this.setPoker(new ArrayList ()); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getPoker() { return poker; } public Card getMax() { return max; } public void setMax(Card max) { this.max = max; } public void setPoker(List poker) { this.poker = poker; Collections.sort(this.poker); for(Card c :this.poker){ this.setMax(c); break; } } public String toString(){ return "玩家Id:"+this.id+"\t玩家姓名:"+this.name; } //玩家摊牌 public String showCard(){ String msg=""; for(Card c:this.poker){ msg+=c.toString()+" "; } return this.toString()+"\t\n"+"玩家牌信息:\t\n"+msg; } @Override public int compareTo(Player o) { return this.max.compareTo(o.getMax()); } } PlayerList.java
package dk.card; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Administrator * 储存玩家列表 */ public class PlayerList { public static Listplayerlist = new ArrayList ();//储存扑玩家列表 public static int sum; public static List rules = new ArrayList (); public PlayerList(){ } public static void setRule(String rule){ rules.add(rule); } public static String getRules(){ String str=""; for(String s:rules){ str+=s+"\t\n"; } return str; } public static void printRules(){ show(getRules()); } //添加玩家 public static boolean addplayer(Player player){ show("添加玩家:"+player.toString()); show("----------------------------------------"); sum++; return playerlist.add(player); } //给所有玩家发牌 public static void shuffleCardToPlayer(){ for(Player player:playerlist){ player.setPoker(CardList.getPoker()); } } //显示发牌结果 public static void showCard(){ for(Player player:playerlist){ show(player.showCard()); show("----------------------------------------"); } } //比较牌点大小并且显示赢家信息 public static void showWinner(){ Collections.sort(playerlist); Player p = playerlist.get(0); show(p.showCard()); show("本局赢家是:"+p.getName()); } //玩家人数 public static int size(){ return sum; } public static void show(Object obj){ System.out.println(obj.toString()); } public static void clear(){ playerlist.clear(); sum = 0 ; } } Index05.java
/** * */ package dk.main; import java.util.Scanner; import dk.card.CardList; import dk.card.Player; import dk.card.PlayerList; /** * @author Administrator * */ public class Index05 extends Show { public static Scanner scanner = new Scanner(System.in); /** * 调用的主方法 * @param args */ public static void main(String[] args) { show("是否开始游戏?0/1"); int isStart = scanner.nextInt(); if(isStart==1){ startGame(); } else{ show("退出游戏!"); } } //启动扑克游戏 public static void startGame(){ show("游戏规则如下:"); PlayerList.setRule("1.至少需要两名玩家"); PlayerList.setRule("2.所有玩家的牌数加起来不超过52张牌"); PlayerList.setRule("3.比较所有玩家手中最大的牌点,最大的牌点数的玩家获胜"); PlayerList.setRule("4.总的牌数只有52张,没有大小王"); PlayerList.setRule("5.黑桃牌A最大,方块3最小,点数相同时,比较花色,黑桃较大。"); PlayerList.printRules(); show("请输入玩家人数:"); int players = 2;//默认玩家数目 int cardofplay = 2;//默认每个玩家的手牌数目 try { players = scanner.nextInt(); while(players<2){ show("玩家人数至少是两人"); show("请重新输入人数:"); players = scanner.nextInt(); } show("请输入每个玩家持有的牌数:"); cardofplay = scanner.nextInt(); while(cardofplay*players>52){ show("玩家*牌数超出范围!请重新输入牌数"); cardofplay = scanner.nextInt(); } show("开始输入玩家信息:"); for(int i=0;iShow.java(辅助显示类)
package dk.main; public abstract class Show { public static void show(Object obj){ System.out.println(obj.toString()); } }实验结果:
是否开始游戏?0/1 1 游戏规则如下: 1.至少需要两名玩家 2.所有玩家的牌数加起来不超过52张牌 3.比较所有玩家手中最大的牌点,最大的牌点数的玩家获胜 4.总的牌数只有52张,没有大小王 5.黑桃牌A最大,方块3最小,点数相同时,比较花色,黑桃较大。 请输入玩家人数: 5 请输入每个玩家持有的牌数: 5(资质代办) 开始输入玩家信息: 请输入第1个玩家姓名: DekingChen 添加玩家:玩家Id:000 玩家姓名:DekingChen ---------------------------------------- 请输入第2个玩家姓名: czq 添加玩家:玩家Id:001 玩家姓名:czq ---------------------------------------- 请输入第3个玩家姓名: chenzhenquan 添加玩家:玩家Id:002 玩家姓名:chenzhenquan ---------------------------------------- 请输入第4个玩家姓名:以上是“java如何实现多人多牌数比较游戏”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
分享标题:java如何实现多人多牌数比较游戏
文章URL:http://cqcxhl.cn/article/pijicc.html