Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ```java
- package com.linlx.Individual.service;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Set;
- import java.util.TreeSet;
- public class GameTest {
- public static void main(String[] args) {
- GameTest a = new GameTest();
- a.createCards();
- }
- /**
- * createCards(创建牌池)
- * void
- * @exception
- * @since 1.0.0
- */
- public void createCards(){
- //创建牌池集合
- List<String> cardsList = new ArrayList<>();
- //生成各个花色牌组
- for (int i = 0; i <= 4; i++) {
- switch (i) {
- case 0:
- addCardsList("♠",13,cardsList);
- break;
- case 1:
- addCardsList("♣",13,cardsList);
- break;
- case 2:
- addCardsList("♥",13,cardsList);
- break;
- case 3:
- addCardsList("◇",13,cardsList);
- break;
- default:
- cardsList.add("大王");
- cardsList.add("小王");
- break;
- }
- }
- /**
- * 以下部分为显示牌组,可要可不要
- * */
- System.out.println("牌组长度:"+cardsList.size());
- Iterator<String> it = cardsList.iterator();
- System.out.print("牌池:");
- while (it.hasNext()) {
- System.out.print(it.next()+" ");
- }
- //调用发牌方法
- giveOutCards(cardsList);
- }
- /**
- * addCardsList(生成各个花色牌组)
- * @param key
- * @param len
- * @param cardsList
- * void
- * @exception
- * @since 1.0.0
- */
- public void addCardsList(String key,int len,List<String> cardsList){
- //开始生成花色牌组,并判断生成A,J,Q,K等特殊牌组
- for (int j = 0; j < len; j++) {
- switch (j) {
- case 0:
- cardsList.add(key+"A");
- break;
- case 10:
- cardsList.add(key+"J");
- break;
- case 11:
- cardsList.add(key+"Q");
- break;
- case 12:
- cardsList.add(key+"K");
- break;
- default:
- cardsList.add(key+(j+1));
- break;
- }
- }
- }
- /**
- * giveOutCards(发牌)
- * @param cardsList
- * void
- * @exception
- * @since 1.0.0
- */
- public void giveOutCards(List<String> cardsList){
- //创建玩家牌池集合
- List<Set<String>> gamePlayerCards = new ArrayList<>();
- //循环出三个玩家牌组
- for (int i = 0; i < 3; i++) {
- //创建玩家牌组
- Set<String> setCar = new HashSet<>();
- //开始循环没法发牌十七张
- for (int j = 0; j < 17; j++) {
- boolean flag = false;
- while (flag == false) {
- //生成一个从54-1的随机数,并减1,稍后作为获取牌池集合的下标
- int index = (int)Math.round(Math.random()*cardsList.size()+1)-1;
- //判断该次想要获取的牌是否是是已被发出
- if(index < cardsList.size()&&cardsList.get(index)!=null){
- //将拿到的牌加入至玩家牌组
- setCar.add(cardsList.get(index));
- //删除牌池中的牌
- cardsList.remove(index);
- //赋值,跳出循环
- flag = true;
- }
- }
- }
- //添加至玩家牌池
- gamePlayerCards.add(setCar);
- }
- /**
- * 以下部分为显示牌组,可要可不要
- * */
- System.out.print("\n地主牌:");
- for (String card : cardsList) {
- System.out.print(card+" ");
- }
- System.out.println();
- for (Set<String> cards : gamePlayerCards) {
- Iterator<String> it = cards.iterator();
- while (it.hasNext()) {
- System.out.print(it.next()+" ");
- }
- System.out.println(" 牌组长度:"+cards.size());
- }
- }
- }
- ```
- 输出:
- ```md
- 牌池:♠A ♠2 ♠3 ♠4 ♠5 ♠6 ♠7 ♠8 ♠9 ♠10 ♠J ♠Q ♠K ♣A ♣2 ♣3 ♣4 ♣5 ♣6 ♣7 ♣8 ♣9 ♣10 ♣J ♣Q ♣K ♥A ♥2 ♥3 ♥4 ♥5 ♥6 ♥7 ♥8 ♥9 ♥10 ♥J ♥Q ♥K ◇A ◇2 ◇3 ◇4 ◇5 ◇6 ◇7 ◇8 ◇9 ◇10 ◇J ◇Q ◇K 大王 小王
- 地主牌:♠Q ♣5 ◇10
- ♥J ◇4 ♣2 ♣K ◇Q ♠J ♠10 ◇2 ♥9 ♣8 ♠6 ◇7 ♥5 ♥7 ♠3 ♥A ♠8 牌组长度:17
- ♣J ♠A ◇J ♥Q ♥2 ♣Q ♥3 ◇6 ♠K ♠4 ♣7 ◇8 ♣4 ♠2 ♣6 ♣A ♠9 牌组长度:17
- ◇K ♥K ◇3 ◇5 ♥4 大王 ♠5 ♣9 ♣10 ♠7 ♥10 ♣3 ♥6 ◇9 ♥8 小王 ◇A 牌组长度:17
- ```
Add Comment
Please, Sign In to add comment