//PokeGame类 package com.bae; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class PokeGame { List<Player> player; List<Card> cards; Player p1; //玩家 Player p2; Card p1max; //玩家1最大的牌 Card p2max; Card p1min; Card p2min; //玩家2最小的牌 //创建扑克牌数组 String[] CardType=new String[] {"方块","梅花","红桃","黑桃"}; String[] CardNum=new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; public void PokeGame(){ this.player = new ArrayList<Player>(); this.cards = new ArrayList<Card>(); } //创建扑克牌并打印 public void cardShow(){ System.out.println("########创建扑克牌########"); for(int i=0;i<13;i++) { for(int j=0;j<4;j++) { cards.add(new Card(CardType[j],CardNum[i],i*10+j)); } } //遍历打印扑克牌 System.out.println("########扑克牌创建成功########"); System.out.print("扑克牌为:"); for(Card c:cards){ System.out.print(c.cardType+c.cardNum+","); } System.out.println("共52张牌"); } //洗牌 public void washCard(){ System.out.println("########开始洗牌########"); Collections.shuffle(cards); System.out.println("正在努力地洗洗洗洗,请等待"); System.out.println("########结束洗牌########"); } //创建玩家 public void Players() { //创建一个Scanner对象,用来获取输入的玩家ID和姓名 Scanner console = new Scanner(System.in); int rept =0; int i=0; while(i<2){ System.out.println("请输入玩家的ID:"); String ID = null; if(console.hasNextInt()){ ID = console.next(); for(int j=0;j<player.size();j++){ Player pl = player.get(j); if(ID.equals(pl.id)){ rept =1; System.out.println("id"+pl.id+"重复"); }else rept=0; } //rept为0则未被占用 if(rept==0){ //提示输入玩家姓名 System.out.println("请输入玩家姓名:"); String name = console.next(); //创建新的玩家对象 Player newPlayer = new Player(ID, name); //通过调用player的add方法,添加ID-玩家 player.add(newPlayer); i++; }else{ System.out.println("该玩家ID已被占用"); } }else{ System.out.println("请输入整数类型的ID!请重新输入!"); console.next(); } } } //开始游戏 public void startGame(){ //开始发牌 System.out.println("########开始发牌########"); p1= player.get(0); p2= player.get(1); p1.handCard.add(cards.get(0)); System.out.println("————————————玩家:"+p1.name+"————————拿牌————————————"); p2.handCard.add(cards.get(1)); System.out.println("————————————玩家:"+p2.name+"————————拿牌————————————"); p1.handCard.add(cards.get(2)); System.out.println("————————————玩家:"+p1.name+"————————拿牌————————————"); p2.handCard.add(cards.get(3)); System.out.println("————————————玩家:"+p2.name+"————————拿牌————————————"); System.out.println("########发牌结束########"); //开始游戏 System.out.println("########开始游戏########"); Collections.sort(p1.handCard);//对集合handCard进行排序 Collections.sort(p2.handCard); p1max = p1.handCard.get(1); p2max = p2.handCard.get(1); System.out.println(p1.name+"最大的手牌:"+p1max.cardType+p1max.cardNum); //输出玩家1的最大手牌 System.out.println(p2.name+"最大的手牌:"+p2max.cardType+p2max.cardNum); //输出玩家2的最大手牌 if(p1max.rank>p2max.rank){ System.out.println("————————————!!!!玩家"+p1.name+"获胜!!!!————————————"); } else{ System.out.println("————————————!!!!玩家"+p2.name+"获胜!!!!————————————"); } //输出玩家的手牌 System.out.println("########玩家各自的手牌########"); p1min = p1.handCard.get(0); p2min = p2.handCard.get(0); System.out.println(p1.name+":"+p1max.cardType+p1max.cardNum+","+p1min.cardType+p1min.cardNum); System.out.println(p2.name+":"+p2max.cardType+p2max.cardNum+","+p2min.cardType+p2min.cardNum); System.out.println("————————————游戏结束————————————"); } public static void main(String[] args){ PokeGame pg = new PokeGame(); pg.PokeGame(); pg.cardShow(); pg.washCard(); pg.Players(); pg.startGame(); } }
//Card类 package com.bae; public class Card implements Comparable<Card>{ String cardType; String cardNum; int rank ; public Card(String cardType,String cardNum,int rank){ this.cardType = cardType; this.cardNum = cardNum; this.rank = rank; } public Card(){ } @Override public int compareTo(Card o) { return this.rank-o.rank; //比较rank值的大小 } }
//Player类 package com.bae; import java.util.ArrayList; import java.util.List; public class Player { String id; String name; List<Card> handCard; public Player(String id,String name){ this.id = id; this.name = name; handCard = new ArrayList<Card>(); } public Player(){ } }
怎么判断输入的玩家ID不要是负数呢
原本不会判断牌大小,参考了qq_冰柠檬_3的作业中,设置rank值!
运行结果:
如果输入的值小于0,可以友好提示下ID不能为负数,并且continue一下