java實現(xiàn)撲克牌發(fā)牌器
Java練習(xí)——撲克牌發(fā)牌器,供大家參考,具體內(nèi)容如下
聲明:學(xué)習(xí)自其他博主,感謝分享
實現(xiàn)思路
- 構(gòu)建一張撲克牌
- 構(gòu)建一套撲克牌
- 測試
構(gòu)建一張撲克牌
/** * @author 冬冬 * 定義一個單張撲克牌類 * 有花型,大小 */ public class Card { private String flower; // 花型 private int daxiao; // 點數(shù) /**構(gòu)造方法 * @param flower * @param daxiao */ public Card(String flower, int daxiao) { this.flower = flower; this.daxiao = daxiao; } /* (non-Javadoc) * @see java.lang.Object#toString() * 獲取本張卡牌的花型與大小,對于特殊的大小,如1——A,輸出時進(jìn)行轉(zhuǎn)換 */ public String toString() { String daxiaoStr = ""; switch(daxiao) { case 1: daxiaoStr = "A"; break; case 11: daxiaoStr = "J"; break; case 12: daxiaoStr = "Q"; break; case 13: daxiaoStr = "K"; break; default: daxiaoStr = String.valueOf(daxiao); } return flower + daxiaoStr; } }
構(gòu)建一套撲克牌
public class Poker { private static String[] flowers = {"黑桃", "紅桃", "草花", "方塊"}; private static int[] daxiaos = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; private Card[] cards;//卡片數(shù)組,應(yīng)該有54張,這里去掉大小王,只52張 /** * 構(gòu)造器 * 按順序?qū)嵗?2張撲克牌 */ public Poker() { cards = new Card[52]; for(int i = 0; i < flowers.length; i++) { for(int j = 0; j < daxiaos.length; j++) { cards[i * 13 + j] = new Card(flowers[i], daxiaos[j]); } } } /** * 洗牌 (隨機亂序) * 對于52個Card實例數(shù)組隨機亂序排列 */ public void shuffle() { for(int i = 0, len = cards.length; i < len; i++) { int index = (int) (Math.random() * len); Card temp = cards[index]; cards[index] = cards[i]; cards[i] = temp; } } /** * 發(fā)牌 * @param index 發(fā)牌的位置 * */ public Card deal(int index) { return cards[index]; } }
測試
public class Test { public static void main(String[] args) { Poker poker = new Poker();//生成撲克牌 poker.shuffle(); // 洗牌(亂序) Card c1 = poker.deal(0); // 發(fā)第一張牌 //創(chuàng)建四個玩家,每個玩家13張空牌 Card [] person1=new Card[13]; Card [] person2=new Card[13]; Card [] person3=new Card[13]; Card [] person4=new Card[13]; //為玩家的的空牌賦值 for(int i=1;i<=52;i++) { if(i<=13) person1[i-1]=poker.deal(i-1); if(i>13&&i<=26) person2[i-1-13]=poker.deal(i-1); if(i>26&&i<=39) person3[i-1-26]=poker.deal(i-1); if(i>39&&i<=52) person4[i-1-39]=poker.deal(i-1); } //打印 System.out.println("玩家1"); for (Card card : person1) { System.out.print(card+" "); } System.out.println(""); System.out.println("玩家2"); for (Card card : person2) { System.out.print(card+" "); } System.out.println(""); System.out.println("玩家3"); for (Card card : person3) { System.out.print(card+" "); } System.out.println(""); System.out.println("玩家4"); for (Card card : person4) { System.out.print(card+" "); } } }
結(jié)果:
玩家1
紅桃6 方塊4 方塊A 黑桃4 草花2 紅桃Q 紅桃J 紅桃K 方塊3 黑桃K 方塊8 黑桃7 黑桃5
玩家2
草花A 黑桃2 紅桃7 草花3 草花5 方塊J 方塊9 草花9 草花K 黑桃8 草花J 黑桃10 紅桃8
玩家3
方塊7 紅桃4 紅桃2 草花6 方塊2 黑桃Q 黑桃9 黑桃A 草花10 草花7 紅桃10 紅桃A 方塊Q
玩家4
紅桃9 方塊5 草花8 方塊10 方塊K 草花Q 黑桃3 紅桃5 黑桃6 黑桃J 紅桃3 方塊6 草花4
注意事項
不要忘記在Poker類里導(dǎo)入Card類,在Test類里面導(dǎo)入Poker和Card;
自己想想,動手做一做才能真正理解。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java隊列篇之實現(xiàn)數(shù)組模擬隊列及可復(fù)用環(huán)形隊列詳解
像棧一樣,隊列(queue)也是一種線性表,它的特性是先進(jìn)先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊(push)要排在隊尾(rear),每次出隊(pop)的都是隊首(front)的人2021-10-10SpringBoot詳細(xì)講解異步任務(wù)如何獲取HttpServletRequest
在使用框架日常開發(fā)中需要在controller中進(jìn)行一些異步操作減少請求時間,但是發(fā)現(xiàn)在使用@Anysc注解后會出現(xiàn)Request對象無法獲取的情況,本文就此情況給出完整的解決方案2022-04-04SpringBoot ThreadLocal 簡單介紹及使用詳解
ThreadLocal 叫做線程變量,意思是 ThreadLocal 中填充的變量屬于當(dāng)前線程,該變量對其他線程而言是隔離的,也就是說該變量是當(dāng)前線程獨有的變量,這篇文章主要介紹了SpringBoot ThreadLocal 的詳解,需要的朋友可以參考下2024-01-01解決Maven的pom.xml中設(shè)置repository不起作用問題
這篇文章主要介紹了解決Maven的pom.xml中設(shè)置repository不起作用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03Spring?Boot小型項目如何使用異步任務(wù)管理器實現(xiàn)不同業(yè)務(wù)間的解耦
這篇文章主要介紹了Spring?Boot小型項目如何使用異步任務(wù)管理器實現(xiàn)不同業(yè)務(wù)間的解耦,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08