java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习,斗地主collection

package com.swift.poker;

import java.util.ArrayList;
import java.util.Collections;

/*训练考核知识点:Collection接口的基本方法、

训练描述:
按照斗地主的规则,完成洗牌发牌的动作。
    具体规则:
        使用54张牌打乱顺序
        三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

操作步骤描述:
准备牌:
    牌可以设计为一个ArrayList<String>,每个字符串为一张牌。
    每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
    牌由Collections类的shuffle方法进行随机排序。
发牌:
    将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
看牌:
    直接打印每个集合*/

public class Poker {

    public static void main(String[] args) {

        ArrayList<String> huase=new ArrayList<String>();
        huase.add("♥");
        huase.add("♠");
        huase.add("♧");
        huase.add("方片");
        ArrayList<String> shuzi=new ArrayList<String>();
        shuzi.add("A");
        shuzi.add("2");
        shuzi.add("3");
        shuzi.add("4");
        shuzi.add("5");
        shuzi.add("6");
        shuzi.add("7");
        shuzi.add("8");
        shuzi.add("9");
        shuzi.add("10");
        shuzi.add("J");
        shuzi.add("Q");
        shuzi.add("K");
        ArrayList<String> puke=new ArrayList<String>();
        for(String hua:huase) {
            for(String shu:shuzi) {
                puke.add(hua+shu);
            }
        }
        puke.add("大王");
        puke.add("小王");
        for(String str:puke) {
            System.out.print(str+" ");
        }

        //随机洗牌
        Collections.shuffle(puke);
        System.out.println();
        for(String str:puke) {
            System.out.print(str+" ");
        }
        //发牌
        ArrayList<String> player1=new ArrayList<String>();
        ArrayList<String> player2=new ArrayList<String>();
        ArrayList<String> player3=new ArrayList<String>();
        ArrayList<String> dipai=new ArrayList<String>();
        for(int i=0;i<54;i++) {
            if(i<3) {
                dipai.add(puke.get(i));
            }
            else if(i%3==0) {
                player1.add(puke.get(i));
            }
            else if(i%3==1) {
                player2.add(puke.get(i));
            }
            else if(i%3==2) {
                player3.add(puke.get(i));
            }
        }
        //看牌
        look(player1);
        look(player2);
        look(player3);
        look(dipai);
    }

    private static void look(ArrayList<String> pai) {
        System.out.println();
        for(String str:pai) {
            System.out.print(str+" ");
        }
        System.out.println();

    }

}

 

扑克牌 洗牌 发牌 Collection
集合练习,斗地主collection package com.swift.poker; import
java.util.ArrayList; import java.util.Collections; /* 训练…

新手在学Java,求教下面利用集合编写斗地主的代码错在哪里了?万分感谢!
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Random;
import java.util.Set;

简易扑克牌游戏,写的略长了点,花了一下午,给大家看一下
游戏开始:O(∩_∩)O哈哈~

// 张三,李四,王五三个人打斗地主,三人约定,洗牌后,
//
随机抽取一张”明牌”并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,并收取最后三张。
// 要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌;
// 思路:
// 1.定义一个Map集合存储一副扑克牌;List存储编号;
// 2.洗牌;
// 3.随机抽取一个索引(该值必须在倒数三张之前),用于表示”明牌”,在发牌
// 时谁抓到这一张便作为”地主”;
// 4.依次给三个人发牌,并监督谁作为地主;地主自动收取最后三张。
// 5.打印地主名;
// 6.最后以排序后的方式打印每个人手里的牌
public class Demo03 {
public static void main(String[] args) {
HashMap map = new HashMap();
// 花色
ArrayList flower = new ArrayList();
Collections.addAll(flower, “♣”, “♦”, “♠”, “♥”);
// 数字
ArrayList number = new ArrayList();
Collections.addAll(number, “3”, “4”, “5”, “6”, “7”, “8”, “10”, “J”, “Q”,
“K”, “A”, “2”);
Integer a = 1;
for (String number1 : number) {
for (String flower1 : flower) {
String s = flower1 + number1;
map.put;
}
}
map.put;
map.put;
System.out.println;

package imooc.pocker;

Set keySet = map.keySet();
ArrayList list = new ArrayList();
for (Integer integer : keySet) {
list.add;
}
System.out.println;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

Collections.shuffle;

/*

System.out.println;

  • 可改变玩家数量和玩家手牌数

  • 根据手牌中最大牌进行简单大小比较
    */
    public class Test {

    public static void main(String[] args) {
    System.out.println(“——–产生一副扑克牌——–“);
    List<Pocker> pockers = Pocker.createPocker();
    System.out.println(“——–扑克牌创建成功——–“);
    System.out.println(pockers.toString());
    System.out.println(“——–开始洗牌——–“);
    Collections.shuffle(pockers);
    System.out.println(“——–洗牌结束——–“);
    System.out.println(pockers.toString());
    System.out.println(“——–创建玩家——–“);
    Scanner scanner = new Scanner(System.in);
    List<Player> players = new ArrayList<Player>();
    int handCardNum = 3;
    int playerNum = 2;
    while (true) {
    try {
    System.out.println(“请输入玩家数量:”);
    playerNum = scanner.nextInt();
    int id;
    String name;
    for (int i = 0; i < playerNum; i++) {
    System.out.println(“创建第” + (i + 1) + “位玩家的ID和姓名:”);
    System.out.println(“输入玩家id(int): “);
    id = scanner.nextInt();
    System.out.println(“输入玩家姓名:”);
    name = scanner.next();
    players.add(new Player(id, name));
    }
    for (int i = 0; i < playerNum; i++) {
    System.out.println(“欢迎玩家:” + players.get(i).getName());
    }
    System.out.println(“——–开始发牌——–“);
    int cardNums = handCardNum * playerNum;
    Pocker pocker;
    for (int i = 0; i < cardNums; i++) {
    pocker = pockers.get(i);
    players.get(i % playerNum).getHandPockers().add(pocker);
    }
    System.out.println(“——–发牌结束——–“);
    System.out.println(“——–开始游戏——–“);
    Pocker maxPocker = new Pocker(“方块”, “2”);
    int winPlayer = 0;
    for (int i = 0; i < playerNum; i++) {
    Collections.sort(players.get(i).getHandPockers()); //
    对手牌进行排序
    Collections.reverse(players.get(i).getHandPockers()); //
    排序后的手牌进行翻转,第一位为最大值
    System.out
    .println(“玩家”

    • players.get(i).getName()
    • “最大手牌为:”
    • players.get(i).getHandPockers().get(0)
      .toString());
      if (maxPocker.compareTo(players.get(i).getHandPockers()
      .get(0)) < 0) {
      maxPocker = players.get(i).getHandPockers().get(0);
      winPlayer = i;
      }
      }
      System.out.println(“玩家” + players.get(winPlayer).getName()
    • “获胜”);
      System.out.println(“玩家各自的手牌为:”);
      for (int i = 0; i < playerNum; i++) {
      System.out.println(players.get(i).getName() + “: ”
    • players.get(i).getHandPockers().toString());
      }
      break;
      } catch (Exception e) {
      System.out.println(“输入值错误,请重新输入”);
      scanner = new Scanner(System.in);
      }
      }

    }

ArrayList p1 = new ArrayList();
ArrayList p2 = new ArrayList();
ArrayList p3 = new ArrayList();
ArrayList p0 = new ArrayList();
System.out.println(list.size;
for (int i = 0; i < list.size {
if (i >= 51) {
p0.add(list.get;
} else {
if (i % 3 == 0) {
p1.add(list.get;
} else if (i % 3 == 1) {
p2.add(list.get;
} else if (i % 3 == 2) {
p3.add(list.get;
}
}

}
玩家类:Player

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注