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);
}
}