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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天学了集合的一个小案例,就是斗地主小游戏的发牌代码,感觉很有兴趣,但是发出的牌是无序的,求指教有顺序的代码怎么写。下面是无序的代码import java.util.ArrayList;
import java.util.Collections;
/*
* 需求:模拟斗地主发牌。
* 思路:
*   A:买牌
*    黑桃A,黑桃2,黑桃3,...黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K
*    红桃...
*    梅花...
*    方块...
*    大王,小王
*   B:洗牌
*    随机置换
*   C:发牌
*    发给三个人
*   D:看底牌
*    留三张
*/
public class CollectionsTest {
public static void main(String[] args) {
  // 买牌
  // 表示花色的数组
  String[] colors = { "黑桃", "红桃", "梅花", "方块" };
  // 表示点数的数组
  String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
    "J", "Q", "K" };
  // 早一个牌盒
  ArrayList<String> array = new ArrayList<String>();
  array.add("大王");
  array.add("小王");
  // 循环装牌
  for (String c : colors) {
   for (String n : numbers) {
    array.add(c.concat(n));
   }
  }
  // 显示所有牌
  // System.out.println(array);
  // 洗牌
  Collections.shuffle(array);
  // 显示所有牌
  // System.out.println(array);
  // 发牌
  ArrayList<String> linString = new ArrayList<String>();
  ArrayList<String> zhouString = new ArrayList<String>();
  ArrayList<String> meString = new ArrayList<String>();
  // 用普通for
  for (int x = 0; x < array.size() - 3; x++) {
   if (x % 3 == 0) {
    linString.add(array.get(x));
   } else if (x % 3 == 1) {
    zhouString.add(array.get(x));
   } else if (x % 3 == 2) {
    meString.add(array.get(x));
   }
  }
  // 看牌
  System.out.println("linString:" + linString);
  System.out.println("zhouString:" + zhouString);
  System.out.println("meString:" + meString);
  // 看底牌
  for (int x = array.size() - 3; x < array.size(); x++) {
   System.out.print("底牌是:"+array.get(x) + "  ");
  }
}
}
/*运行结果是:
linString:[红桃8, 梅花3, 黑桃J, 方块3, 方块6, 方块10, 黑桃10, 方块4, 小王, 方块Q, 梅花Q, 梅花5, 方块J, 红桃A, 黑桃Q, 大王, 梅花K]
zhouString:[红桃10, 红桃9, 黑桃9, 黑桃K, 黑桃3, 梅花10, 方块2, 方块5, 黑桃7, 梅花J, 方块A, 方块8, 红桃J, 黑桃4, 红桃7, 梅花A, 方块9]
meString:[梅花7, 梅花2, 黑桃A, 梅花6, 梅花8, 方块7, 黑桃6, 红桃K, 红桃5, 红桃Q, 黑桃5, 红桃6, 红桃4, 黑桃8, 梅花4, 黑桃2, 梅花9]
底牌是:红桃3  底牌是:红桃2  底牌是:方块K  
*/

评分

参与人数 1黑马币 +3 收起 理由
0618张军 + 3 赞一个!,,期待下次能发一个能让人出牌的代.

查看全部评分

2 个回复

倒序浏览
不错,,下次写一个能出牌的,,
回复 使用道具 举报
你这是从哪学的? 加我Q给你代码吧.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马