使用Java語言寫的一個簡單的撲克牌發牌程式碼
利用HashMap存放撲克牌和它的索引,利用ArrayList存放撲克牌的索引。在洗牌時打亂的是ArrayList的順序,按洗完牌的順序把索引發給每一個玩家的牌組集合。TreeSet集合會自動將索引順序排好,這樣撲克牌的順序就按照大小排好啦。最後再使用look方法遍歷出每個玩家牌組的順序得到結果。
package com.kd.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;
public class Poker {
public static void main(String[] args) {
HashMap<Integer, String> hezi = new HashMap<>();//存放撲克牌和它的索引
ArrayList<Integer> list = new ArrayList<>();//存放撲克牌的索引
//生成撲克牌,從小到大存入集合中,這裡採取的花色大小是:梅花<方片<黑桃<紅桃
String[] colors = {"♣","♦","♠","♥"};//花色陣列
String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//大小陣列
int index = 0;//撲克牌的索引
//將撲克牌存放進HashMap集合中
for (int i = 0; i < numbers.length; i++) {
for (int j = 0; j < colors.length; j++) {
String puke = colors[j].concat(numbers[i]);
hezi.put(index, puke);
list.add(index);
index++;
}
}
hezi.put(index, "小王");
list.add(index);
index++;
hezi.put(index, "大王");
list.add(index);
//洗牌
Collections.shuffle(list);
TreeSet<Integer> w1set = new TreeSet<>();//玩家1牌組集合
TreeSet<Integer> w2set = new TreeSet<>();//玩家2牌組集合
TreeSet<Integer> w3set = new TreeSet<>();//玩家3牌組集合
TreeSet<Integer> dpset = new TreeSet<>();//底牌牌組集合
//發牌
for (int i = 0; i < list.size(); i++) {
if (i >= list.size()-3) {
dpset.add(list.get(i));
}else if (i%3 == 0) {
w1set.add(list.get(i));
}else if (i%3 == 1) {
w2set.add(list.get(i));
}else {
w3set.add(list.get(i));
}
}
int d = 0;//d表示地主牌的索引
while (true) {
d = (int)(Math.random()*54);//產生一個0-53之間的隨機數,對應著撲克的索引
if (!dpset.contains(d)) {//地主牌的索引不是底牌索引
break;//結束迴圈
}
}
System.out.println("地主牌為:"+hezi.get(d));
if (w1set.contains(d)) {
w1set.addAll(dpset);
} else if (w2set.contains(d)) {
w2set.addAll(dpset);
} else {
w3set.addAll(dpset);
}
//看牌
look("玩家1", w1set, hezi);
look("玩家2", w2set, hezi);
look("玩家3", w3set, hezi);
look("底牌", dpset, hezi);
}
/**
*
* @param name 玩家名
* @param set 玩家牌組集合
* @param map 撲克牌集合
*/
public static void look(String name, TreeSet<Integer> set, HashMap<Integer, String> map) {
System.out.println(name+"的牌是:");
for (Integer i : set) {
System.out.print(map.get(i)+" ");
}
System.out.println();
}
}
相關文章
- 自己寫的一個洗撲克牌的java程式Java
- java程式:簡易撲克牌遊戲Java遊戲
- Java 簡單實現撲克牌抽象類Java抽象
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 編碼也快樂!撲克牌排序JAVA排序Java
- Java第三季—簡易撲克牌遊戲Java遊戲
- 用Java實現撲克牌排序Java排序
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- Java學習--撲克牌比大小的小遊戲Java遊戲
- java入門最後一章 簡易撲克牌比較大小Java
- 編碼也快樂活動:撲克牌排序排序
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 用SQL實現撲克牌排序SQL排序
- 用C實現撲克牌排序排序
- 編碼也快樂:撲克牌排序 - Python排序Python
- 編碼也快樂活動:撲克牌排序(JavaScript)排序JavaScript
- 撲克牌排序(JS版) 編碼也快樂!排序JS
- [每日一題] 第十二題:撲克牌中的順子每日一題
- 撲克牌排序:基於基數排序的方法排序
- Java入門第三季撲克牌小遊戲Java遊戲
- 用C#實現撲克牌排序C#排序
- Java入門第三季7-1簡易撲克牌作業Java
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 用cpp0.5實現撲克牌排序排序
- 撲克牌排序-Scala之畫蛇添足版排序
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- 【YOLOv5】實現撲克牌的點數識別YOLO
- 純CSS實現撲克牌效果,太牛了吧CSS
- JAVA入門第三季——最後練習題撲克牌Java
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 利用JAVA實現發牌-->洗牌-->理牌的過程(話不多說直接上程式碼)Java
- python實現撲克遊戲 - 抽鬼牌 和 21點Python遊戲
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- JAVA入門第三季 簡易撲克牌遊戲原始碼 可以自定義玩家人數 有詳細注Java遊戲原始碼
- 用 C 語言寫一個簡單的 Unix Shell(1)
- 用 C 語言寫一個簡單的 Unix Shell(2)