A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穆帆 中级黑马   /  2015-9-24 23:27  /  2915 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
  1. package cn.itcast.demo05_扑克牌;

  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.List;

  6. public class Demo {
  7.         public static void main(String[] args) {
  8.                
  9.                 String[]color={"♥","♠","♣","♦"};
  10.                 String[]num={"2","3","4","5","6","7","8","9","10","J","o","k","A"};
  11.                 String[]pukerArray=new String[54];
  12.                 int index=0;
  13.                 for(String c:color){
  14.                         for(String n:num){
  15.                                 pukerArray[index++]=c+n;
  16.                                
  17.                         }
  18.                 }
  19.                 pukerArray[index++]="大王";
  20.                 pukerArray[index]="小王";
  21.                 System.out.println(Arrays.toString(pukerArray));
  22.                 List<String>list=Arrays.asList(pukerArray);
  23.                 Collections.shuffle(list);
  24.                 //发牌
  25.                 ArrayList<String> user1List = new ArrayList<>();
  26.                 ArrayList<String> user2List = new ArrayList<>();
  27.                 ArrayList<String> user3List = new ArrayList<>();
  28.                 ArrayList<String> dipaiList = new ArrayList<>();
  29.                 for(int i=0;i<list.size();i++){
  30.                         if(i>=list.size()-3){
  31.                                 dipaiList.add(list.get(i));
  32.                         }else if(i%3==0){
  33.                                 user1List.add(list.get(i));
  34.                         }else if(i%3==1){
  35.                                 user2List.add(list.get(i));
  36.                         }else if(i%3==2) {
  37.                                 user3List.add(list.get(i));
  38.                         }
  39.                 }
  40.                 System.out.println("奥巴马:" + user1List);
  41.                 System.out.println("普京:" + user2List);
  42.                 System.out.println("朴槿惠:" + user3List);
  43.                 System.out.println("底牌:" + dipaiList);
  44.         }

  45. }
复制代码
目前是实现了发牌的功能,但是整牌的方法和思路求指教

最佳答案

查看完整内容

通过TreeMap集合,把键0-53 和 值 牌 (排好序的)以键值对的形式存放到此TreeMap集合中,然后把键的集合取出打乱后发给每一位,发完后把键排序,根据键取出的 对应的牌(值)也就是排好序的,求币

6 个回复

倒序浏览
通过TreeMap集合,把键0-53  和 值  牌 (排好序的)以键值对的形式存放到此TreeMap集合中,然后把键的集合取出打乱后发给每一位,发完后把键排序,根据键取出的 对应的牌(值)也就是排好序的,求币
回复 使用道具 举报
牌的顺序是不能变的,那我们就只需要考虑让他发牌的时候不要按顺序发就好了,就是让他从牌堆里随机抽牌来发,即在你的list.get()方法中参数不要加i,加一个我们自定义的随机数,在0~53之间的一个随机整数即可。
代码如下
import java.util.*;
public static int getRandom(int max)
        {
                Random r  = new Random();
                int random = r.nextInt(max);//返回一个0~max-1之间的随机整数
                       
                return random;
        }
有了这个getRandom方法你就可以在你的源码中的发牌时这样体现:list.get(getRandom(54));
当然为了体现可读性,参数54也可改成list.size(),即:list.get(getRandom(list.size()));
如有错,请轻喷
回复 使用道具 举报
  1. package it.cast.test01;               

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.TreeSet;

  6. /**
  7. * 分析:
  8. *    a、创建集合作为牌盒(hashMap)
  9. *    b、创建集合集合存储索引(ArrayList)
  10. *    c、创建两个数组 一个是花色,一个是数据
  11. *    d、遍历这两个数组,拼接后存放到牌盒中去;
  12. *    e、 洗牌
  13. *    f、发牌
  14. *    g、看牌
  15. */

  16. public class porkerTest
  17. {


  18.         public static void main(String[] args)
  19.         {
  20.                 HashMap<Integer,String> porkerBox = new HashMap<Integer,String>();
  21.                
  22.                 int index=0;
  23.                
  24.                 ArrayList<Integer> indexs = new ArrayList<Integer>();
  25.                
  26.        
  27.                
  28.                 String [] colors ={"♥","♣","♦","♠"};
  29.                
  30.                 String[] nums = {"3","4","5","6","7","8","9","10","J","Q","k","A","2"};

  31.         for(String num: nums)
  32.         {
  33.                 for(String color: colors)
  34.                 {
  35.        
  36.                         //拼接两个数组 并添加到牌盒中
  37.                         porkerBox.put(index,color.concat(num));
  38.                        
  39.                         indexs.add(index);
  40.                        
  41.                         index++;
  42.                 }
  43.         }
  44.        
  45.        
  46.                 porkerBox.put(index,"大王");
  47.                 indexs.add(index);
  48.                 index++;
  49.        
  50.                 porkerBox.put(index,"小王");
  51.                 indexs.add(index);
  52.                 index++;
  53.                
  54.                 //洗牌
  55.                 Collections.shuffle(indexs);
  56.                
  57.                 //发牌
  58.                
  59.                 TreeSet<Integer> one = new TreeSet<Integer>();
  60.                 TreeSet<Integer> two = new TreeSet<Integer>();
  61.                 TreeSet<Integer> three = new TreeSet<Integer>();
  62.                 TreeSet<Integer> dipai = new TreeSet<Integer>();
  63.                
  64.                 for(int x = 0;x<porkerBox.size();x++)
  65.                 {
  66.                         if(x>=porkerBox.size()-3)
  67.                         {
  68.                                 dipai.add(indexs.get(x));
  69.                         }
  70.                         else if(x%3==0)
  71.                         {
  72.                                 one.add(indexs.get(x));
  73.                         }
  74.                         else if(x%3==1)
  75.                         {
  76.                                 two.add(indexs.get(x));
  77.                                
  78.                         }
  79.                         else if(x%3==2)
  80.                         {
  81.                                 three.add(indexs.get(x));
  82.                         }
  83.                 }
  84.                
  85.                 lookporker("张三",one, porkerBox);
  86.                 lookporker("李四",two, porkerBox);
  87.                 lookporker("王五",three, porkerBox);
  88.                 lookporker("底牌",dipai, porkerBox);
  89.                

  90.         }

  91.         //看牌
  92.          public static  void lookporker(String name,TreeSet<Integer> i,HashMap<Integer,String> p)
  93.         {
  94.                  
  95.                  System.out.println(name+"\t");
  96.                  
  97.                 for(Integer index: i)
  98.                 {
  99.                         String s = p.get(index);
  100.                        
  101.                         System.out.print(s+"\t");
  102.                 }
  103.                
  104.                 System.out.println();
  105.         }

  106. }
复制代码




C:\Users\Administrator\Desktop\QQ截图20150925110412.png
回复 使用道具 举报
楼主 我发的图片是不是看不到??
    你把我给你的代码运行一遍    看看结果就行了   可以看牌 但是不能打牌额,嘻嘻
  求打赏
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马