package com.yangkai.pai;
import java.util.*;
public class PlayTest {
//创建扑克牌的载体,扑克牌是有序的,不重复载体,所以用List集合
List list=new ArrayList();
List persons=new ArrayList();
Map huaMap=new HashMap(){
{
put((short)0,"红桃");
put((short)1,"黑桃");
put((short)2,"方片");
put((short)3,"梅花");
}
};
/**
* 创建洗牌方法
*/
public void init(){
System.out.println("============洗牌中==========");
//清空牌库
list=new ArrayList();
//创建13*4 也就是 52张牌的对象,因为这些牌是随机排列的,所以使用set集合
Set pais=new HashSet();
for(int i=1;i<14;i++){
for (short j = 0; j
Pai pai=new Pai();
pai.setHua(j);
pai.setNumber(i);
pais.add(pai);
}
}
//遍历set集合,把牌放入list集合中,也就是放入牌库中
list.addAll(pais);
}
/**
* 创建玩家
*/
public void initPerson(){
System.out.println("==========初始化玩家=========");
Person p1=new Person();
p1.setId(1);
p1.setName("赌神");
persons.add(p1);
Person p2=new Person();
p2.setId(2);
p2.setName("赌圣");
persons.add(p2);
}
/**
* 发牌,每人发两张
*/
public List fapai(){
System.out.println("=========开始发牌=========");
//如果牌数少于4张,调用洗牌方法
if(list.size()<4){
this.init();
}
//获取手牌
List handList=new ArrayList();
for(int i=4;i>0;i--){
//生成一张手牌
HandPai handPai=new HandPai();
//抽牌
Pai pai=list.get(i-1);
//给手牌赋值
handPai.setHua(pai.getHua());
handPai.setNumber(pai.getNumber());
//发给一个玩家
if(i%2==0){
handPai.setName(persons.get(0).getName());
}else{
handPai.setName(persons.get(1).getName());
}
handList.add(handPai);
//从牌库移除一张牌
list.remove(i-1);
System.out.println("玩家:"+handPai.getName()+",发牌:"+huaMap.get(handPai.getHua())+handPai.getNumber());
}
return handList;
}
/**
* 比较两个人的手牌大小
* @param handPais
*/
public void bijiao(List handPais){
Collections.sort(handPais,new PaiCompara());
System.out.println("获胜者为:"+handPais.get(3).getName()+
",最大点数为:"+handPais.get(3).getNumber() +
",花色为:"+huaMap.get(handPais.get(3).getHua()));
}
/**
* 游戏入口
* @param args
*/
public static void main(String[] args) {
System.out.println("===欢迎进入欢乐比大小游戏===");
System.out.println("====================");
System.out.println("====== 1:开始游戏 ===");
System.out.println("====== 2:退出游戏 ===");
System.out.println("====================");
System.out.println("===请输入1并按回车开始游戏===");
Scanner scanner=new Scanner(System.in);
int cmd=scanner.nextInt();
if(cmd == 1){
PlayTest playTest=new PlayTest();
playTest.init();
playTest.initPerson();
do {
List handPaiList=playTest.fapai();
playTest.bijiao(handPaiList);
System.out.println("====================");
System.out.println("====== 3:继续发牌 ===");
System.out.println("====== 2:退出游戏 ===");
System.out.println("====================");
cmd=scanner.nextInt();
}while (cmd != 2);
System.out.println("===欢迎下次光临===");
}else if(cmd == 2){
System.out.println("===欢迎下次光临===");
}
}
/**
* 手牌对象
*/
class HandPai implements Comparable{
//玩家名称
private String name;
//扑克牌花色 0-红桃 1-黑桃 2-方片 3-梅花
private Short hua;
//牌号 1-13
private int number;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getHua() {
return hua;
}
public void setHua(Short hua) {
this.hua = hua;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int compareTo(HandPai o) {
return 0;
}
}
/**
* 定义比较规则
*/
class PaiCompara implements Comparator{
public int compare(HandPai o1, HandPai o2) {
if(o1.getNumber()>o2.getNumber()){
return 1;
}else if(o1.getNumber()
return -1;
}else{
if(o1.getHua()>o2.getHua()){
return 1;
}else if(o1.getHua()
return -1;
}
}
return 0;
}
}
/**
* 这是一个扑克牌对象
*/
public class Pai {
//扑克牌花色 0-红桃 1-黑桃 2-方片 3-梅花
private Short hua;
//牌号 1-13
private int number;
public Short getHua() {
return hua;
}
public void setHua(Short hua) {
this.hua = hua;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
/**
* 创建打牌的玩家
*/
public class Person {
/**
* 玩家id
*/
private int id;
/**
* 玩家名称
*/
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}