扑克牌面向对象

1:card类

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

public class Cards {
private List list = new ArrayList();

//创建一副扑克牌
public Cards(){
    System.out.println("-----------------创建扑克牌------------------");
    String[] color = {"黑桃", "红桃", "梅花", "方片"};
    String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J","Q","K", "A"};
    for(int i=0;i<color.length;i++)
        for(int j=0;j<number.length;j++){
            list.add(new Card(color[i], number[j]));
        }   
    System.out.println("----------------扑克牌创建成功!---------------");
}

//获取一副扑克牌
public List<Card> getList() {
    return list;
}

//洗牌(打乱)
public void shufCards(){
    System.out.println("----------------开始洗牌------------------------");
    Collections.shuffle(list);
    System.out.println("----------------洗牌结束------------------------");
}

//展示一副扑克牌
public void showCards(){
    System.out.print("当前的扑克牌为:");
    System.out.print("[ ");
    for(int i=0;i<list.size();i++){
        System.out.print(list.get(i).getColor() + list.get(i).getNumber()+ " ");
    }
    System.out.println(" ]");
}

2:cardset类

package card;

import java.util.Comparator;

public class CardComparator implements Comparator {

@Override
public int compare(Card c1, Card c2) {
    // 构建花色和牌值数组,通过比对,计算得到某张牌的价值(大小)
    String[] color = {"方片", "梅花", "红桃", "黑桃"};
    String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J","Q","K", "A"};

    //由于比较规则是先比较牌值,如果相等再比较花色(黑红梅方),所以将牌值赋予较高的权值
    int valueOfC1 = 0;
    int valueOfC2 = 0;
    for(int i=0;i<number.length;i++){
        if(c1.getNumber().equals(number[i])) valueOfC1 += i*10;
        if(c2.getNumber().equals(number[i])) valueOfC2 += i*10;
    }
    for(int i=0;i<color.length;i++){
        if(c1.getColor().equals(color[i])) valueOfC1 += i;
        if(c2.getColor().equals(color[i])) valueOfC2 += i;
    }

    if( valueOfC1 > valueOfC2 ) return -1;
    if( valueOfC1 < valueOfC2 ) return 1;

    return 0;
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值