sun_haha
2015-08-06 20:26
package com.ppcc.control; /** * 单张扑克牌 * @author ppcc * */ public class Card implements Comparable<Card>{ /** * 扑克牌的值 */ private String cardVal; /** * 扑克牌的花色 */ private String cardColor; /** * 构造函数 * @param cardVal 扑克牌的值 * @param cardColor 扑克牌的花色 */ public Card(String cardVal, String cardColor) { super(); this.cardVal = cardVal; this.cardColor = cardColor; } /** * 获取扑克牌的值 * @return 扑克牌的值 */ public String getCardVal() { return cardVal; } /** * 获取扑克牌的花色 * @return 扑克牌的花色 */ public String getCardColor() { return cardColor; } /** * 显示卡片内容 */ public void showCard(){ System.out.print(this.cardColor+this.cardVal+" "); } @Override public int compareTo(Card o) { //扑克牌的大小依次增加 String cardNum = "2,3,4,5,6,7,8,9,10,J,Q,K,A"; //扑克牌的花色依次增大 String cardColor = "梅花,方块,黑桃,红桃"; int flag=cardNum.indexOf(this.getCardVal())-cardNum.indexOf(o.getCardVal()); if(flag==0) flag=cardColor.indexOf(this.getCardColor())-cardColor.indexOf(o.getCardColor()); return flag; } } package com.ppcc.control; import java.util.ArrayList; import java.util.Collections; /** * 创建一副扑克牌 * @author ppcc * */ public class Pocker { /** * 一副扑克牌 */ private ArrayList<Card> pocker; /** * 扑克牌的值 */ private static final String[] valBase={"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; /** * 扑克牌的花色 */ private static final String[] colorBase={"红桃","黑桃","梅花","方块"}; /** * 构造函数 */ public Pocker() { pocker=new ArrayList<Card>(); this.createPocker(); } /** * 创建扑克牌 */ private void createPocker(){ for(String color : colorBase) for(String val : valBase) pocker.add(new Card(val,color)); } /** * 显示所有扑克牌 */ public void showPocker(){ for(Card currCard : pocker) currCard.showCard(); } /** * 洗牌 */ public void rePocker(){ Collections.shuffle(pocker); } /** * 臭牌 * @param players 玩家 * @param num 玩家需抽取的牌数目 */ public void sendOutPocker(ArrayList<Player> players,int num){ for(int j=0; j<num; j++){ for(int i=0; i<players.size(); i++){ System.out.println("---玩家:"+players.get(i).getName()+"-拿牌"); //玩家抽牌 players.get(i).setHandCard(pocker.get(0)); //将抽取后排从pocker里删除 pocker.remove(0); } } } } package com.ppcc.control; import java.util.ArrayList; /** * 玩家类 * @author ppcc * */ public class Player { /** * 玩家ID */ private int ID; /** * 玩家姓名 */ private String name; /** * 玩家手牌 */ private ArrayList<Card> handCard; /** * 构造函数 * @param iD 玩家ID * @param name 玩家姓名 * @param handCard 玩家手牌 */ public Player(int iD, String name) { this.ID = iD; this.name = name; handCard=new ArrayList<Card>(); } /** * 获取玩家ID * @return 玩家ID */ public int getID() { return ID; } /** * 获取玩家姓名 * @return 玩家姓名 */ public String getName() { return name; } /** * 修改玩家手牌 * @param handCard 玩家手牌 */ public void setHandCard(Card card) { this.handCard.add(card); } /** * 获取玩家手中大的牌 * @return 大的牌 */ public Card maxCard(){ //初始化最大牌 Card maxCard=handCard.get(0); for(int i=1; i<handCard.size(); i++){ //两两比较得到最大牌 if(handCard.get(i).compareTo(maxCard)>0) maxCard=handCard.get(i); } return maxCard; } /** * 打印玩家手中的牌 */ public void showHandCard(){ System.out.print(this.name+":"); //for循环来遍历打印手中的牌 for(Card card :handCard) card.showCard(); System.out.println(""); } } package com.ppcc.control; import java.util.ArrayList; import java.util.InputMismatchException; import java.util.Scanner; /** * 比点数游戏 * @author ppcc * */ public class Game { /** * 玩家数组链表 */ private ArrayList<Player> players; /** * 扑克牌 */ private Pocker pocker; /** * 玩家数目 */ private int playNum; /** * 玩家抽取牌数目 */ private int getCardNum; /** * 输入 */ private Scanner sc=new Scanner(System.in); /** * 构造函数 */ public Game(){ players=new ArrayList<Player>(); this.prePocker(); } /** * 准备扑克牌 */ public void prePocker(){ System.out.println("-----------------创建扑克牌-----------------"); //创建扑克牌 pocker=new Pocker(); System.out.println("----------------创建扑克牌成功!----------------"); //将创建好扑克牌打印出来 pocker.showPocker(); System.out.println("-----------------开始洗牌-----------------"); //进行洗牌 pocker.rePocker(); System.out.println("-----------------洗牌结束!-----------------"); } /** * 创建玩家 */ public void createPlayers(){ System.out.println("-----------------创建玩家-----------------"); //输入玩家数目 do{ playNum=inputCommand("输入玩家数目:"); if(playNum<2 || playNum>10) System.out.println("玩家数目为2~10!\n"); }while(playNum<2 || playNum>10); //输入玩家抽取的牌数 do{ getCardNum=inputCommand("输入玩家抽取牌数:"); if(getCardNum<1 || getCardNum>5) System.out.println("玩家抽取为1~5!\n"); }while(getCardNum<1 || getCardNum>5); //for循环创建玩家 for(int i=0; i<playNum; i++){ System.out.println("\n请输入第"+(i+1)+"玩家的ID和姓名!"); int id=idJup(); System.out.print("玩家姓名:"); String name=sc.next(); //创建玩家并添加到玩家数组链表中 players.add(new Player(id,name)); } //打印所有玩家姓名 for(Player player : players) System.out.println("----欢迎玩家:"+player.getName()); System.out.println("----------------创建玩家结束!----------------"); } /** * 发牌 */ public void sendPocker(){ System.out.println("------------------开始发牌------------------"); //发牌 pocker.sendOutPocker(players, getCardNum); System.out.println("------------------发牌结束------------------"); } /** * 开始游戏 */ public void game(){ System.out.println("------------------开始游戏------------------"); //初始化赢的玩家 Player win=players.get(0); for(Player player : players){ System.out.print("玩家:"+player.getName()+"最大的手牌为:"); //获取玩家手中的最大牌 player.maxCard().showCard(); System.out.println(""); //比较玩家之间的最大牌 if(win.maxCard().compareTo(player.maxCard())<0) win=player; } //打印赢的玩家 System.out.println("玩家:"+win.getName()+"获胜!"); System.out.println("------------------游戏结束------------------"); } /** * 显示所有玩家手中的牌 */ public void playerPocker(){ for(Player player : players){ player.showHandCard(); } } /** * 输入整数 * @param str 提示语句 * @return 返回输入值 */ public int inputCommand(String str){ try{ System.out.print(str); int input=sc.nextInt(); return input; }catch(InputMismatchException e){ System.out.println("输入有误!请输入数字命令!\n"); sc=new Scanner(System.in); return inputCommand(str); } } /** * 判断是否存在id * @return */ public int idJup(){ int id=inputCommand("玩家ID:"); for(Player player : players){ if(player.getID()==id){ System.out.println("ID不唯一,重新输入!\n"); return idJup(); } } return id; } } package com.ppcc.control; /** * 测试类 * @author ppcc * */ public class Test { /** * @param args */ public static void main(String[] args) { Game game=new Game(); game.createPlayers(); game.sendPocker(); game.game(); game.playerPocker(); } }
可以可以
Java入门第三季
409792 学习 · 4340 问题
相似问题