建设网站项目总结,北京装修大概多少钱一平方,osx wordpress,网页设计个人总结800字目录
一.扑克牌的数据结构
二.买牌(扑克牌的初始化)
三.洗牌
四.发牌
五.完整代码
Card.java
CardList.java
六.测试
输出结果 一.扑克牌的数据结构
首先#xff0c;扑克牌是一幅一幅的#xff0c;除去大小王以外一共有52张#xff0c;我们可以考虑用数组来存储… 目录
一.扑克牌的数据结构
二.买牌(扑克牌的初始化)
三.洗牌
四.发牌
五.完整代码
Card.java
CardList.java
六.测试
输出结果 一.扑克牌的数据结构
首先扑克牌是一幅一幅的除去大小王以外一共有52张我们可以考虑用数组来存储数组的每一个元素都是一张牌这是牌库的牌除了要考虑牌库的牌以外还需要考虑玩家手上的牌玩家的手牌是牌库的一部分我们使用顺序表来存储扑克牌对于一张牌来说我们有俩个参数花色和点数
public class Card {private int rank;//点数private String suit;//花色public int getRank() {return rank;}public void setRank(int rank) {this.rank rank;}public String getSuit() {return suit;}public void setSuit(String suit) {this.suit suit;}Overridepublic String toString() {return suitrank ;}
}我们将花色存放在总的扑克牌组中使用字符串数组进行存放
public class CardList {public static final String[] suits {♠,♥,♣,♦};
} 二.买牌(扑克牌的初始化)
我们要在买牌的过程中具体的抽象化出一组牌我们使用数组来存储数组的每一个元素都是一张牌我们使用泛型方便我们定义牌组。
扑克牌除了大小王一共是52张所以我们定义一个扑克牌数组大小为52并且通过俩个for循环来实现牌的具体信息外边的for循环用来实现牌的花色里面的for循环用来实现牌的点数在循环最中间使用零时的变量生成一张零时的扑克牌在我们得到一张完整的牌之后就使用ArrayList的插入方法add将我们新生成的牌放入牌组中最后将生成的52张牌组成的牌组返回我们就完成了扑克牌的初始化 //买一副牌也就是对牌进行初始化public static final ListCard buyCard(){ListCard cards new ArrayListCard(52);for (int i 0; i 4; i) {for (int j 0; j 13; j) {String tempSuit suits[i];int tempRank j;Card newCard new Card();newCard.setSuit(suits[i]);newCard.setRank(j);cards.add(newCard);}}return cards;} 三.洗牌
所谓的洗牌就是随机的打乱牌与牌之间的顺序回想我们现实生活中我们洗牌的动作其实就是不停的将部分牌插入到另一部分中然后交换牌与牌之间的顺序。
因此我们这里封装一个方法swap用来对牌与牌实现交换然后我们在洗牌方法shuffle中使用随机数来确保我们交换的位置是随机的并且使用for循环可以保证我们对每一个位置都至少进行一次洗牌 //洗牌public void swap(ListCard cards,int i,int j){Card tempCard cards.get(i);cards.set(j,tempCard);cards.set(i,cards.get(j));}//洗牌public void shuffle(ListCard cards){Random random new Random();for (int i cards.size()-1; i 0; i--) {int index random.nextInt(i);swap(cards,index,i);}} 四.发牌
发牌实际上就是将一部分牌等量的分给玩家我们这里定义出三个玩家的手牌组用三个数组分别来实现然后我们将这三个数组放入一个大数组来记录要发给玩家的所有牌我们用俩个for循环嵌套来保证我们对3名玩家各发5张牌发牌的过程我们可以这样理解hands.get(j用来拿到3个人的手牌组add(tempCard用来将牌放入这三个数组中 //发牌public ListListCard dealCard(ListCard cardList){ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();ListListCard hands new ArrayList();hands.add(hand1);hands.add(hand2);hands.add(hand3);for (int i 0; i 5; i) {for (int j 0; j 3; j) {Card tempCard cardList.remove(0);hands.get(j).add(tempCard);}}return hands;} 五.完整代码
Card.java
public class Card {private int rank;private String suit;public int getRank() {return rank;}public void setRank(int rank) {this.rank rank;}public String getSuit() {return suit;}public void setSuit(String suit) {this.suit suit;}Overridepublic String toString() {return suitrank ;}
}CardList.java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class CardList {public static final String[] suits {♠,♥,♣,♦};//买一副牌也就是对牌进行初始化public static final ListCard buyCard(){ListCard cards new ArrayListCard(52);for (int i 0; i 4; i) {for (int j 0; j 13; j) {String tempSuit suits[i];int tempRank j;Card newCard new Card();newCard.setSuit(suits[i]);newCard.setRank(j);cards.add(newCard);}}return cards;}//洗牌public void swap(ListCard cards,int i,int j){Card tempCard cards.get(i);cards.set(j,tempCard);cards.set(i,cards.get(j));}//洗牌public void shuffle(ListCard cards){Random random new Random();for (int i cards.size()-1; i 0; i--) {int index random.nextInt(i);swap(cards,index,i);}}//发牌public ListListCard dealCard(ListCard cardList){ListCard hand1 new ArrayList();ListCard hand2 new ArrayList();ListCard hand3 new ArrayList();ListListCard hands new ArrayList();hands.add(hand1);hands.add(hand2);hands.add(hand3);for (int i 0; i 5; i) {for (int j 0; j 3; j) {Card tempCard cardList.remove(0);hands.get(j).add(tempCard);}}return hands;}
}六.测试
我们可以写个测试案例 public static void main(String[] args) {CardList cardGame new CardList();ListCard ret cardGame.buyCard();System.out.println(买牌);System.out.println(ret);System.out.println(洗牌);cardGame.shuffle(ret);System.out.println(ret);System.out.println(揭牌);ListListCard hand cardGame.dealCard(ret);for (int i 0; i hand.size(); i) {System.out.println(第 (i1) 个人的牌hand.get(i));}System.out.println(剩下的牌);System.out.println(ret);}
输出结果 可以发现是完全可以正常运行的 本次的分享就到此为止了希望我的分享能给您带来帮助也欢迎大家三连支持你们的点赞就是博主更新最大的动力如有不同意见欢迎评论区积极讨论交流让我们一起学习进步有相关问题也可以私信博主评论区和私信都会认真查看的我们下次再见