使用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原始碼
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- Java第三季—簡易撲克牌遊戲Java遊戲
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- 每日一練(33):撲克牌中的順子
- java入門最後一章 簡易撲克牌比較大小Java
- JZ-045-撲克牌順子
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- 劍指Offer 撲克牌順子
- [每日一題] 第十二題:撲克牌中的順子每日一題
- Java入門第三季7-1簡易撲克牌作業Java
- Java入門第三季撲克牌小遊戲Java遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 【YOLOv5】實現撲克牌的點數識別YOLO
- JAVA入門第三季——最後練習題撲克牌Java
- 利用JAVA實現發牌-->洗牌-->理牌的過程(話不多說直接上程式碼)Java
- bzoj1816: [Cqoi2010]撲克牌(二分)
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記
- Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝Java排序
- python實現撲克遊戲 - 抽鬼牌 和 21點Python遊戲
- 寫一個簡單的程式碼生成器
- GO語言一個簡單的工程Go
- 編寫簡單的Java程式碼:HelloWoridJava
- JAVA入門第三季 簡易撲克牌遊戲原始碼 可以自定義玩家人數 有詳細注Java遊戲原始碼
- C語言簡單程式碼程式C語言
- 用Java編寫一個最簡單的桌面程式Java
- 手把手教你用C語言寫一個簡單的quine(輸出自身的程式)C語言UI
- 使用 Vala 編寫一個簡單的文字識別程式
- Python使用Socket寫一個簡單聊天程式Python
- 用 PHP 寫一個"程式語言"PHP
- mustafaquraish/cup:簡單的像C一樣的程式語言AI
- 攤牌了!我要手寫一個“Spring Boot”Spring Boot
- 不是天才,怎麼抄《小丑牌》?——從《小丑牌》簡單拆解Roguelike的系統和體驗
- 使用 R 語言實現簡單的文字識別程式