卡牌游戏

**

卡牌游戏

创建一副扑克牌,包括四种花色:黑桃、红桃、梅花、方片 
十三种点数:2-10,J,Q,K,A,不考虑大小王 
创建两名玩家,玩家至少要有ID,姓名、手牌等属性,手牌为扑克牌的集合。			
洗牌,将之前创建的“一副扑克牌”打乱顺序发牌,将洗牌之后的扑克牌集合,
从	第一张开始,发给两名玩家,按照一人一张的方式,每人发两张游戏,比
较两名玩家手中的扑克牌,规则为:取两人各自手中点数最大的牌进行比较,
点数大的赢;若两人各自的点数最大的牌相等,则再按花色比较。

首先分析一副扑克是由什么组成的。

	多张扑克组成一副扑克
	一张扑克必须由点数和花色组成
	先创建一张扑克类

//一张扑克类
public class Card {
private Integer number;
private Integer color;
private String showN;
private String showC;
public Card(Integer number, Integer color) {
	super();
	this.number = number;
	this.color = color;
	
	if(number<=10) {
		this.showN=number+"";
	}else {
		switch(number) {
		case 11:
			this.showN="J";
			break;
		case 12:
			this.showN="Q";
			break;
		case 13:
			this.showN="K";
			break;
		case 14:
			this.showN="A";
			break;
		}	
	}
	
	switch(color) {
	case 0:
		this.showC = "♦";
		break;
	case 1:
		this.showC = "♣";
		break;
	case 2:
		this.showC = "♥";
		break;
	case 3:
		this.showC = "♠";
		break;
	}
	
}

public Integer getNumber() {
	return number;
}

public Integer getColor() {
	return color;
}

@Override
public String toString() {
	return showC+ showN ;
}

创建一符扑克类

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class Cards {
	private List<Card> cards;
	private int index;
	public Cards() {
	//一张扑克存到扑克集合中。组成一副扑克
		cards = new ArrayList<Card>();
		for (int i = 0; i < 4; i++) {
			for (int j = 2; j < 15; j++) {
				cards.add(new Card(j, i));
			}
		}
	}
	//洗牌
	public void shuffle() {
		Random r = new Random();
		index=0;
		int n=0;
		Card card =null;
		for (int i = 0; i < 200; i++) {
			n = r.nextInt(cards.size());
			card = cards.remove(n);
			n =r.nextInt(cards.size());
			cards.add(n, card);
		}
	}
	//取牌
	public Card deal() {
		return cards.get(index++);
	}
	@Override
	public String toString() {
		return toString();
	}

}

玩家类

	import java.util.ArrayList;
	import java.util.Comparator;
	import java.util.List;
//玩家类

	public class Player {

	private String name;
	private List<Card> cards;
	
	public Player(String name) {
		this.name= name;
		cards = new ArrayList<Card>();
	}
	
	//获取手牌
	public void receiveCard(Card card) {
		cards.add(card);
	}
	
	//整理手牌
	public void collatingCard() {
		cards.sort(new Comparator<Card>() {

			@Override
			public int compare(Card c1, Card c2) {
				// TODO Auto-generated method stub
				return c2.getNumber()-c1.getNumber();
			}
		});
	}

	
	public String getName() {
		return name;
	}


	public List<Card> getCards() {
		return cards;
	}

	@Override
	public String toString() {
		return name+cards.toString();
	}
}

游戏类

import java.util.ArrayList;
import java.util.List;

//游戏类

public class GameRule {
	
	private Cards cards;
	
	public GameRule() {
		cards = new Cards();
	}
	
	public void cardsGame(Player p1, Player  p2) {
		
		p1.getCards().clear();
		p2.getCards().clear();
		//洗牌
		cards.shuffle();
		
		//发牌
		for (int i = 0; i < 2; i++) {
			p1.receiveCard(cards.deal());
			p2.receiveCard(cards.deal());
		}
		
		System.out.println(p1);
		System.out.println(p2);
		
		int idN1 = p1.getCards().get(0).getNumber() * 1000 +p1.getCards().get(1).getNumber()*10 +
				p1.getCards().get(0).getColor();
		int idN2 = p2.getCards().get(0).getNumber() * 1000 +p2.getCards().get(1).getNumber()*10 +
				p2.getCards().get(0).getColor();
		if(idN1>idN2) {
			System.out.println("恭喜" + p1.getName() + "获得胜利!");
		}else {
			System.out.println("恭喜" + p2.getName() + "获得胜利!");
		}
	}
}

public class Test {
	public static void main(String[] args) {
		GameRule g = new GameRule();
		for (int i = 0; i < 10; i++) {
			g.cardsGame(new Player("张三"), new Player("李四"));
			System.out.println();
		}
	}
}

测试结果
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值