简单的扑克牌比较游戏
1. 创建一副扑克牌,不考虑大小王 2. 创建两名玩家,玩家至少要有ID、姓名、手牌等属性 3. 洗牌,将之前创建的扑克牌顺序打乱(说明集合是有序的) 4. 发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张 5. 开始游戏,比大小,取两人各自的点数最大的牌进行比较,点数大的赢,若大小相同比花色(黑红梅方)
package com.poker; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner; public class PlayPoker { List<Card> cards ; //牌 List<Player> players; //玩家 //static Player[] players = new Player[2]; PlayPoker(){ this.cards = new ArrayList<Card>(); this.players = new ArrayList<Player>(); } public static void main(String[] args) { PlayPoker play = new PlayPoker(); play.addCards(); play.foreach(); play.reCards(); play.addplayer(); play.playerGetCards(); play.playerForeach(); play.campareCards(); } //加入牌52张无大小王 public void addCards() { String[] colors = {"黑桃","红心","草花","方块"}; String[] num = {"2","3","4","5","6","7","8","9","10","J","Q","K","A",}; System.out.println("---------添加牌-------"); for(int i = 0; i <colors.length; i++) { for(int j = 0; j < num.length; j++) { cards.add(new Card(colors[i],num[j])); } } System.out.println("------添加成功--------"); } //重洗牌 方法不是很好有待改善 public void reCards() { System.out.println("\n----开始洗牌----"); Random random = new Random(); for(int i =0 ; i < 52; i++) { int k = random.nextInt(cards.size()); Card c =cards.get(k); cards.remove(k); cards.add(random.nextInt(cards.size()),c); } System.out.println("-----洗牌结束-------"); } // 按顺序遍历所有的牌 public void foreach() { System.out.print("添加的牌:"); for(Card c:cards) { System.out.print(c.color+c.num+" "); } } //添加玩家 限制两名玩家 public void addplayer() { Scanner console = new Scanner(System.in); for( int i = 0; i < 2; i++) { System.out.println("输玩家id"); int cinid = console.nextInt(); System.out.println("输入玩家姓名"); String cinname = console.next(); // players[i] =new Player(id,name); players.add(new Player(cinid,cinname)); } } // 随机取牌发给 个个玩家 这限制了玩家拿牌数量 public void playerGetCards() { System.out.println("----发牌----"); Random random = new Random(); for(Player player:players) { for( int j = 0; j < 2; j++) { //这里的2为拿牌限制 Card c = cards.get(random.nextInt(cards.size())); player.cards.add(c); } // for(int i = 0; i < players.length; i++) // { // for( int j = 0; j < 2; j++) { //这里的2为拿牌限制 // Card c = cards.get(random.nextInt(cards.size())); // players[i].cards.add(c); // } // } } System.out.println("-----发牌结束-----"); } // 遍历 每次玩家的拿牌 并打印 public void playerForeach() { for(Player player:players) { for(Card card:player.cards) { System.out.print(player.name + ": " + card.color + card.num + "\n"); } } } // 打印两个玩家的最大手牌 // 比较 最大手牌 并打印赢家 public void campareCards() { for(Player player:players) { Collections.sort(player.cards,new CardComparator()); } Player player1 =players.get(0); Player player2 =players.get(1); System.out.print(player1.name + "最大的牌是:"); Card card1 = player1.cards.get(1); System.out.print(card1.color+card1.num + "\n"); System.out.print(player2.name + "最大的牌是:"); Card card2 = player2.cards.get(1); System.out.print(card2.color+card2.num + "\n"); System.out.println("------比较大小结果------"); if(card1.num==card2.num) { if(card1.compareTo(card2)>0) { System.out.println(player1.name + "获胜"); } if(card1.compareTo(card2)==0) { System.out.println("平"); } if(card1.compareTo(card2)<0) { System.out.println(player2.name + "获胜"); } } if(card1.num.compareToIgnoreCase(card2.num)>0) { System.out.println(player1.name + "获胜"); } if(card1.num.compareToIgnoreCase(card2.num)<0) { System.out.println(player2.name + "获胜"); } } }
package com.poker; public class Card implements Comparable { public String color; public String num; public Card(String color,String num) { this.color = color; this.num = num; } @Override public int compareTo(Object o) { // TODO Auto-generated method stub return this.color.compareTo(((Card)o).color); }
}
package com.poker; import java.util.ArrayList; import java.util.List; public class Player { public int id; public String name; public List<Card> cards; public Player(int id,String name) { this.id = id; this.name = name; this.cards = new ArrayList<Card>(); } public Player() { this.cards = new ArrayList<Card>(); } }
package com.poker; import java.util.Comparator; public class CardComparator implements Comparator<Card> { @Override public int compare(Card o1, Card o2) { // TODO Auto-generated method stub return o1.num.compareTo(o2.num); } }