标签:底牌 斗地主 代码 玩家 案例 add ArrayList 集合 发牌
斗地主案例的需求分析
按照斗地主规则,完成洗牌发牌的动作。
具体规则:
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
1、准备牌,将54张牌存储到一个集合中。
特殊牌:大王、小王
分别定义数组或者集合存储四种花色以及排的序号
使用循环嵌套遍历这两个数组或者集合,使用字符串拼接再存储到新的数组或者集合中。
最后再添加大王、小王
2、洗牌
可以使用集合工具类的Collections的shuffle( )方法,会随机打乱集合中元素的顺序
3、发牌
要求:1人17张牌,最后剩余3张作为底牌,一人一张轮流发牌,让集合的索引%3;
定义4个集合,用来存储3个玩家的牌和底牌
索引%3为0时添加到第一个集合
索引%3为1时添加到第二个集合
索引%3为2时添加到第三个集合
当索引大于等于51时,添加到底牌集合
4、看牌
直接打印集合,或者遍历存储玩家和底牌的集合
斗地主案例的代码实现:
public class demg_09 { public static void main(String[] args) { //准备洗牌 List<String> list = new ArrayList<>(); String[] colors = {"♠","♥","♣","♦"}; String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; //先把大王小王存储到集合中 list.add("大王"); list.add("小王"); //循环嵌套遍历两个数组,组装52张牌 for (String number : numbers) { for (String color : colors) { //把组装好的牌存储到集合当中 list.add(color+number); } } /* 洗牌 使用集合的工具类Collections中的方法 */ Collections.shuffle(list); /* 发牌 定义四个集合,存储玩家的牌和底牌 */ ArrayList<String> arrayList1 = new ArrayList<>(); ArrayList<String> arrayList2 = new ArrayList<>(); ArrayList<String> arrayList3 = new ArrayList<>(); ArrayList<String> arrayList4 = new ArrayList<>(); /* 遍历集合,获取每一张牌 使用集合的索引%3给三个玩家轮流发牌 剩余:3张牌给底牌 注意: 先判断底牌(i>51),否则牌就发没了 */ for (int i = 0; i <list.size() ; i++) { //获取每一张牌 String p = list.get(i); //轮流发牌 if (i>=51){ //改底层发牌 arrayList4.add(p); }else if (i%3==0){ //给玩家1发牌 arrayList1.add(p); }else if (i%3==1){ //给玩家2发牌 arrayList2.add(p); }else if (i%3==2){ //给玩家3发牌 arrayList3.add(p); } } //看牌 System.out.println("兵王强"+arrayList1); System.out.println("空军中尉"+arrayList2); System.out.println("空军上尉"+arrayList3); System.out.println("底牌"+arrayList4); } }
标签:底牌,斗地主,代码,玩家,案例,add,ArrayList,集合,发牌 来源: https://www.cnblogs.com/aqhk/p/16450808.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。