**
卡牌游戏
创建一副扑克牌,包括四种花色:黑桃、红桃、梅花、方片
十三种点数: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();
}
}
}
测试结果