扑克牌的面向对象建模

创建枚举类型Suit和rank

package com.syz.card;

import java.io.Serializable;

public class Card implements Serializable{

private static final long serialVersionUID = -4279016186402068401L;

private int suit;

private int rank;

public static final int SPADE = 0;

public static final int HEART = 1;

public static final int CLUB = 2;

public static final int DIAMOND = 3;

public static final int BLACK = 4;

public static final int RED = 5;

private static final String[] suits = new String[] { "黑桃", "红桃", "梅花", "方块",
        "小", "大" };

public static final int ACE = 1000;

public static final int TWO = 1001;

public static final int THREE = 1002;

public static final int FOUR = 1003;

public static final int FIVE = 1004;

public static final int SIX = 1005;

public static final int SEVEN = 1006;

public static final int EIGHT = 1007;

public static final int NINE = 1008;

public static final int TEN = 1009;

public static final int JACK = 1010;

public static final int QUEEN = 1011;

public static final int KING = 1012;

public static final int JOKER = 1013;

private static final String[] ranks = new String[] { "A", "2", "3", "4",
        "5", "6", "7", "8", "9", "10", "J", "Q", "K", "王" };

public Card(int suit, int rank) {
    if (suit > -1 && suit < 6) {
        if (suit < 4) {
            if (rank < 1000 || rank > 1012) {
                throw new IllegalArgumentException("花色或点数参数错误!");
            }
        }
        else {
            if (rank != 1013) {
                throw new IllegalArgumentException("花色或点数参数错误!");
            }
        }
    }
    else {
        throw new IllegalArgumentException("花色参数错误!");
    }
    this.suit = suit;
    this.rank = rank;
}

public int getSuit() {
    return suit;
}

public int getRank() {
    return rank;
}

@Override
public String toString() {
    return suits[suit] + ranks[rank - 1000];
}

创建两个类:Card(牌)

package com.syz.card;

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

public class CardClient {
public static void main(String[] args) {
test2();

}

private static void test1() {
    Card c = new Card(Card.BLACK, Card.JOKER);
    System.out.println(c);
}

private static void test2() {
    int[] suits = new int[] { Card.SPADE, Card.HEART, Card.CLUB,
            Card.DIAMOND };
    int[] ranks = new int[] { Card.ACE, Card.TWO, Card.THREE, Card.FOUR,
            Card.FIVE, Card.SIX, Card.SEVEN, Card.EIGHT, Card.NINE,
            Card.TEN, Card.JACK, Card.QUEEN, Card.KING };
    List<Card> cards = new ArrayList<Card>();
    for (int i = 0; i < suits.length; i++) {
        for (int j = 0; j < ranks.length; j++) {
            cards.add(new Card(suits[i], ranks[j]));
        }
    }
    cards.add(new Card(Card.BLACK, Card.JOKER));
    cards.add(new Card(Card.RED, Card.JOKER));
    System.out.println(cards);
}

CardsSet类

public static void CardsSet(Card[] deck) {
String[] f=new String[] {“A”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”};
String[] s=new String[] {“黑桃”,“红桃”,“方块”,“梅花”};
deck=new Card[52];
for(int i=0;i<deck.length;i++) {
deck[i]=new Card();
deck[i].setFace(f[i%13]);
deck[i].setSuit(s[i/13]);
}
for(int i=0;i<deck.length;i++) {
System.out.print(deck[i].toString());
}
System.out.println();
//洗牌
for(int i=0;i<deck.length;i++) {
int num=(int)(Math.random()*(deck.length-1));
Card temp=deck[i];
deck[i]=deck[num];
deck[num]=temp;
}
for(int i=0;i<deck.length;i++) {
System.out.print(deck[i].toString());
}
}

comparable接口

class CardsSet implements Comparable{
private String name;
private int age;
private float score;

public Student(String name, int age, float score) {  
    this.name = name;  
    this.age = age;  
    this.score = score;  
}  
   
public String toString()  
{  
    return name+"\t\t"+age+"\t\t"+score;  
}  

@Override  
public int compareTo(Student o) {  
    // TODO Auto-generated method stub  
    if(this.score>o.score)//  
        return -1;//由高到底排序  
    else if(this.score<o.score)  
        return 1;  
    else{  
        if(this.age>o.age)  
            return 1;//由底到高排序  
        else if(this.age<o.age)  
            return -1;  
        else  
            return 0;  
    }  
}  

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值