目錄
前言
問題
代碼展現及分析
?poker類
game類
?Text類
前言
洗牌算法為ArrayList具體使用的典例,可以很好的讓我們快速熟系ArrayList的用法。如果你對ArrayList還不太了解除,推薦先看本博主的ArrayList的詳解。
ArrayList的詳解_WHabcwu的博客-CSDN博客
問題
我們需要一副完整的撲克牌,除去大小王一共52張牌,參與游戲的玩家共3名,在洗牌后分發每名玩家5張撲克牌。
代碼展現及分析
面向對象思想解決問題主要分為這3步:
- 找出其中的所有的對象
- 實現所有的對象
- 完成對象之間的交互
我們可以想到這幾個類:撲克牌,游戲的操作類, 測試類。
?poker類
描述撲克牌的屬性為花色和數字,我們對其進行封裝,再重寫?toString方法
public class poker {private String suit;private String rank;public poker(String suit, String rank) {this.suit = suit;this.rank = rank;}public String getSuit() {return suit;}public void setSuit(String suit) {this.suit = suit;}public String getRank() {return rank;}public void setRank(String rank) {this.rank = rank;}@Overridepublic String toString() {return "{" + suit + rank + "}";}
}
game類
?
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class game {private static final String[] SUITS={"?","?","?","?"};public List<poker> buypoker(){List<poker> pokers=new ArrayList<>();for (int i = 0; i < SUITS.length; i++) {for (int j = 1; j <=13 ; j++) {poker poker = new poker(SUITS[i], j);pokers.add(poker);}}return pokers;}public List<poker> suaffle(List<poker> pokers){Random random = new Random();for (int i = pokers.size(); i >0; i--) {int indx=random.nextInt(i);poker tmp=pokers.get(i);pokers.set(i,pokers.get(indx));pokers.set(indx,tmp);}return pokers;}public void grant(List<poker> pokers){List<poker> hand1=new ArrayList<>();List<poker> hand2=new ArrayList<>();List<poker> hand3=new ArrayList<>();List<List<poker>> hand=new ArrayList<>();hand.add(hand1);hand.add(hand2);hand.add(hand3);for (int i = 0; i < 5; i++) {for(int j=0;j<3;j++){poker card=pokers.remove(0);hand.get(j).add(card);}}System.out.println("第一個人的牌:");System.out.println(hand1);System.out.println("---------------------------");System.out.println("第二個人的牌:");System.out.println(hand2);System.out.println("---------------------------");System.out.println("第三個人的牌:");System.out.println(hand3);System.out.println("---------------------------");System.out.println("剩下的牌");System.out.println(pokers);}
}
buypoker方法的解析:
suaffle方法的解析:
?
grant方法的解析:
?Text類
public class Text {public static void main(String[] args) {game game = new game();List<poker> pokers=game.buypoker();System.out.println("牌到手了:");System.out.println(pokers);System.out.println("---------------------------");System.out.println("洗牌:");pokers=game.suaffle(pokers);System.out.println(pokers);System.out.println("---------------------------");game.grant(pokers);}
}
以上為我個人的小分享,如有問題,歡迎討論!!!?
都看到這了,不如關注一下,給個免費的贊?
?