准备好纸牌

准备好纸牌

打牌前是先要把牌拿出来的,下面我们就来准备好供玩的纸牌。把这功能哪好呢?打牌应该有一个打牌各个过程的类,这个类暂叫PlayCard。好,要为PlayCard类增加准备纸牌功能,就先从为它写个测试开始,测试类名为TestPlayCard,内容在下:

package yxc.card.common.test;

 

import java.util.List;

 

import yxc.card.common.Card;

import yxc.card.common.PlayCard;

import junit.framework.TestCase;

 

public class TestPlayCard extends TestCase {

    public void testReady(){

       PlayCard playCard=new PlayCard();

       List<Card> cardList=playCard.ready(1,true);

       assertEquals("1",54,cardList.size());

       cardList=playCard.ready(1,false);

       assertEquals("2",52,cardList.size());

       cardList=playCard.ready(4,true);

       assertEquals("3",216,cardList.size());

       cardList=playCard.ready(5,false);

       assertEquals("4",260,cardList.size());

    }

}

为通过此测试,写出的PlayCard类代码如下,它有ready(int pairsOfCard, boolean hasJoker)函数,负责生成纸牌,第一个参数是要准备几副牌,第二个参数是包括大小王否。

package yxc.card.common;

 

import java.util.ArrayList;

import java.util.List;

 

public class PlayCard {

 

    public PlayCard() {

       super();

    }

 

    public List<Card> ready(int pairsOfCard, boolean hasJoker) {

       List<Card> list=new ArrayList<Card>();

       for(int i=0;i<pairsOfCard;i++){

           int number=54;

           if(!hasJoker){

              number=52;

           }

           for(int j=1;j<=number;j++){

              list.add(new Card(j));

           }

       }

       return list;

    }

}

 

为了把准备好的Card的列表转换成相应的CardFace列表以供显示和用户操作,写了个转换函数:cardToCardFace()

TestPlayCard类中增加测试代码:

public void testCardToCardFace(){

       PlayCard playCard=new PlayCard();

       List<Card> cardList=playCard.ready(1,true);

       assertEquals("1",54,cardList.size());

       cardList=playCard.ready(1,false);

       List<CardFace> cardFaceList=playCard.cardToCardFace(cardList);

       assertEquals("2",cardList.size(),cardFaceList.size());

       assertEquals("3",cardList.get(5),cardFaceList.get(5).getCard());

    }

PlayCard类中增加函数public List<CardFace> cardToCardFace(List<Card> cardList);代码在下:

public List<CardFace> cardToCardFace(List<Card> cardList) {

       List<CardFace> cardFaceList=new ArrayList<CardFace>();

       if(cardList==null||cardList.size()<1){

           return cardFaceList;

       }

       for(Card card:cardList){

           cardFaceList.add(new CardFace(card));

       }

       return cardFaceList;

    }

顺便把CardFace列表转换成Card列表的功能也做了出来。

TestPlayCard类中增加测试代码:

public void testCardFaceToCard(){

       PlayCard playCard=new PlayCard();

       List<Card> cardList=playCard.ready(1,true);

       cardList=playCard.ready(1,false);

       List<CardFace> cardFaceList=playCard.cardToCardFace(cardList);

       cardList=playCard.cardFaceToCard(cardFaceList);

       assertEquals("1",cardFaceList.size(),cardList.size());

       assertEquals("2",cardFaceList.get(5).getCard(),cardList.get(5));

    }

PlayCard类中增加函数cardFaceToCard():

public List<Card> cardFaceToCard(List<CardFace> cardFaceList) {

       List<Card> cardList=new ArrayList<Card>();

       if(cardFaceList==null||cardFaceList.size()<1){

           return cardList;

       }

       for(CardFace cardFace:cardFaceList){

           cardList.add(cardFace.getCard());

       }

       return cardList;

    }

以纸牌玩法锄大地为例,它用一副牌,不要大小王,用下面代码即可把牌准备好:

PlayCard playCard=new PlayCard();

List<CardFace> cardFaceList=playCard.cardToCardFace(playCard.ready(1,false));

纸牌的准备就暂到这,以后不合用再修改了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值