<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
設計一副新的的撲克牌, 4個花色(♥, ♠, ♦, ♣)對應 1 到 13 , 不算大小王一共52張牌 ; 然後將撲克牌隨機打亂順序 , 最後實現三個人進行摸牌 , 三個人輪流進行摸牌(每次摸一張牌) , 最終每個人手裡有五張牌
public class poker { private String suit;//花色 private int num;//數位 public poker(String suit, int num) { this.suit = suit; this.num = num; } public String getSuit() { return suit; } public void setSuit(String suit) { this.suit = suit; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public String toString() { return suit+" "+num; } }
import java.util.ArrayList; import java.util.List; import java.util.Random; public class pokers { public static final String[] SUITS = {"♠","♥","♣","♦"}; //買一副撲克牌 public static List<poker> buypokers() { List<poker> pokerList = new ArrayList<>(); for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { pokerList.add(new poker(SUITS[i],j)); } } return pokerList; } //洗牌 public static void shuffle(List<poker> pokerList) { Random random = new Random(); for (int i = pokerList.size()-1; i > 0; i--) { int index = random.nextInt(i); swap(pokerList, i, index); } } //交換 public static void swap (List<poker> pokerList, int i, int index) { poker tmp = pokerList.get(i); pokerList.set(i, pokerList.get(index)); pokerList.set(index, tmp); } public static void main(String[] args) { List<poker> pokerList = buypokers(); System.out.println("新牌:" + pokerList); shuffle(pokerList); System.out.println("洗牌:" + pokerList); //揭牌 3個人 每個人輪流揭5張牌 //用來存放三個人揭起來的牌 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++) { //確定是誰在摸牌 List<poker> tmpHand = hand.get(j); tmpHand.add(pokerList.remove(0)); } } //輸出每個人的牌 for (int i = 0; i < hand.size(); i++) { System.out.println("第"+(i+1)+"個人的牌是"+hand.get(i)); } System.out.println("剩餘的牌有"+pokerList); } }
執行結果 :
定義一個類 , 類中欄位包含一張撲克牌的 花色 和 數位 ,並給出構造方法和其他相關存取欄位的方法
public class poker { private String suit;//花色 private int num;//數位 public poker(String suit, int num) { this.suit = suit; this.num = num; } public String getSuit() { return suit; } public void setSuit(String suit) { this.suit = suit; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } @Override public String toString() { return suit+" "+num; } }
定義一個存放4種花色的陣列 , 建立一個順序表來存放獲取到的撲克牌 , 通過兩層迴圈得到52張撲克牌 , 外層迴圈4次每次得到一種花色 , 內層迴圈13次得到每種花色的13個值
public static final String[] SUITS = {"♠","♥","♣","♦"}; //買一副撲克牌 public static List<poker> buypokers() { List<poker> pokerList = new ArrayList<>(); for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { pokerList.add(new poker(SUITS[i],j)); } } return pokerList; }
順序表中有52張牌 , 也就是52個元素 , 從最後一個元素開始迴圈 , 利用 Random 這個類中的方法生成1到元素下標之間的亂數 , 將生成亂數位置的元素和迴圈中的那個元素進行交換 .
//洗牌 public static void shuffle(List<poker> pokerList) { Random random = new Random(); for (int i = pokerList.size()-1; i > 0; i--) { int index = random.nextInt(i); swap(pokerList, i, index); } } //交換 public static void swap (List<poker> pokerList, int i, int index) { poker tmp = pokerList.get(i); pokerList.set(i, pokerList.get(index)); pokerList.set(index, tmp); }
定義三個順序表分存放三個人摸起來的牌 , 將這三個順表再作為元素放入另一個新的順序表中 , 好方便執行迴圈摸牌的操作 , 然後還是通過兩層迴圈去摸牌 , 三個人每人摸一張 , 摸5輪 , 所以外層迴圈執行5次 ; 內層迴圈3三次 , 每次表示一個人摸去一張牌 ;
其實每次摸牌就就是從撲克牌所在順序表中刪除第一個元素 , 所以每次摸牌存取的都是順序表中的第一個元素 , remove方法返回的是刪除的元素
//用來存放三個人揭起來的牌 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++) { //確定是誰在摸牌 List<poker> tmpHand = hand.get(j); tmpHand.add(pokerList.remove(0)); } }
以上就是Java模擬實現撲克牌洗牌和發牌的範例程式碼的詳細內容,更多關於Java撲克牌洗牌發牌的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45