简单扑克牌比较游戏ava集合框架实践

简单的扑克牌比较游戏
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);
	}
}

猜你喜欢

转载自blog.csdn.net/lin1094201572/article/details/78844756