目录
演示效果:
所需api:
常用API
public boolean add(E e)
: 把给定的对象添加到当前集合中 。
public E get(int index)
: 返回此列表中指定位置上的元素。
public void clear()
: 清空集合中所有的元素。
public boolean remove(E e)
: 把给定的对象在当前集合中删除。
public boolean contains(E e)
: 判断当前集合中是否包含给定的对象。
public boolean isEmpty()
: 判断当前集合是否为空。
public int size()
: 返回集合中元素的个数。
public Object[] toArray()
: 把集合中的元素,存储到数组中。
Stream对象 :
流的运用:
方法名 方法作用 返回值类型 方法种类 count 统计个数 long 终结 foreach 遍历 void 终结 filter 过滤 Stream 非终结 limit 限定前几个 Stream 非终结 skip 跳过前几个 Stream 非终结 map 映射 Stream 非终结 sorted 排序 Stream 非终结 distinct 去重 Stream 非终结 使用规则
我的代码就使用了流来接收集合,来实现发牌功能,整个项目所使用的api虽然都不复杂,但是能够独立写出来还是具有一定的挑战性的。想要锻炼自己,那就跟着我写
Stream只能操作一次
Stream方法返回的是新的流
Stream不调用终结方法,中间的操作不会执行
本文适合聪明的java初学者才可以看得懂!
但是其中的出牌逻辑判断没有写,因为工作量太大了。怎么打牌就全靠大家自觉了,要是345678没有7我也没办法。。
直接放代码
代码:
person类:
public class Person {
private String name;
public static ArrayList<String> drawCard(String name, ArrayList<String> arrayList) {
ArrayList<String> selfCard = new ArrayList<>();
//定义随机数
// Random random = new Random();
//判断随机数的索引
// int x = 54;
// if (name.equals("地主")){
// x=54;
// }
// else if (name.equals("农民1")){
// x=34;
// }
// else {
// x=16;
// }
// random.nextInt(x);
if (name.equals("地主")) {
// Poker.washCard().get(20);
//获取二十张牌并删除原有集合的牌数
// selfCard= selfCard.stream().limit(20).collect(Collectors.toCollection(ArrayList::new));
for (int i = 0; i < 20; i++) {
// selfCard.add(Poker.washCard().get(i));
selfCard.add(arrayList.get(i));
arrayList.remove(i);
}
}
else if (name.equals("农民1")){
for (int i = 0; i < 17; i++) {
// selfCard.add(Poker.washCard().get(i));
selfCard.add(arrayList.get(i));
arrayList.remove(i);
}
// return selfCard1;
}
else if (name.equals("农民2")){
selfCard= arrayList.stream().collect(Collectors.toCollection(ArrayList::new));
arrayList.clear();
// return selfCard2;
}
return selfCard;
}
}
Poker类(扑克):
public class Poker {
// private static ArrayList<String> arrayList = washCard();
public static ArrayList<String> washCard() {
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "3♠", "3♥", "3♣", "3♦", "4♠", "4♥", "4♣", "4♦", "5♠", "5♥", "5♣", "5♦", "6♠", "6♥", "6♣", "6♦", "7♠", "7♥", "7♣", "7♦", "8♠", "8♥", "8♣", "8♦", "9♠", "9♥", "9♣", "9♦", "10♠", "10♥", "10♣", "10♦", "J♠", "J♥", "J♣", "J♦", "Q♠", "Q♥", "Q♣", "Q♦", "K♠", "K♥", "K♣", "K♦", "A♠", "A♥", "A♣", "A♦", "2♠", "2♥", "2♣", "2♦", "小王", "大王");
//进行洗牌
Collections.shuffle(arrayList);
// System.out.println(arrayList);
return arrayList;
}
// public ArrayList<String> getArrayList() {
// return arrayList;
// }
//
// public void setArrayList(ArrayList<String> arrayList) {
// this.arrayList = washCard();
// }
// public static void main(String[] args) {
// allCard();
// }
}
Game类:
public class Game {
//出牌方法
public static int playCards(ArrayList<String> a,String name){
Scanner scanner = new Scanner(System.in);
System.out.println("请"+name+"出牌");
System.out.println(name+"手上的牌"+a);
String next = scanner.next();
if (next.equals("skip")){
System.out.println(name+"要不起");
return next.length();
}
for (int x=0;x<next.length();x++){
for (int y=0;y<a.size();y++){
if (a.get(y).charAt(0)==next.charAt(x)){
a.remove(y);
}
}
}
System.out.println(name+"剩余的牌"+a);
if (a.size()<=0) {
System.out.println(name+"赢了");
}
return next.length();
}
//匹配方法
// public static boolean piPei(int n,String name){
// Scanner scanner = new Scanner(System.in);
// System.out.println("请"+name+"出牌");
// String next = scanner.next();
// if (n==next.length()){
// return true;
// }
// else {
// System.out.println("出老千剁手");
// return false;
// }
// }
public static void main(String[] args) {
//定义一个数组
String[] names=new String[]{"地主","农民1","农民2"};
//定义一个数组装所有牌
ArrayList<String> allArray = new ArrayList<>();
//地主牌的集合
ArrayList<String> arr=new ArrayList<>();
//农民牌的集合
ArrayList<String> arr1=new ArrayList<>();
ArrayList<String> arr2=new ArrayList<>();
//定义一个数组装集合名
String [] collectionName=new String[]{"arr","arr1","arr2"};
Scanner scanner = new Scanner(System.in);
System.out.println("进行洗牌");
allArray= Poker.washCard();
System.out.println(allArray);
System.out.println("洗牌结束,进行发牌");
System.out.print("我是地主我的牌是:");
//地主牌的集合
arr= Person.drawCard("地主", allArray);
System.out.println(arr);
System.out.print("我是农民1我的牌是:");
//农民1的牌的集合·
arr1= Person.drawCard("农民1",allArray);
System.out.println(arr1);
System.out.print("我是农民2我的牌是:");
arr2= Person.drawCard("农民2",allArray);
System.out.println(arr2);
//出牌方法
while (true) {
playCards(arr, names[0]);
playCards(arr1, names[1]);
playCards(arr2, names[2]);
if (arr.size()<=0||arr1.size()<=0||arr2.size()<=0){
break;
}
// if (piPei(x, names[1])) {
//playCards(arr,names[2]);
// }
}
//匹配方法
// System.out.println("请农民1出牌");
// String nong1=scanner.next();
// int nongMin1Out=n.length();
// //删除农民1手中的牌
// for (int x=0;x<diZhuOut;x++){
// for (int y=0;y<arr.size();y++){
// if (arr1.get(y).charAt(0)==n.charAt(x)){
// arr1.remove(y);
// }
// }
// }
// System.out.println("农民1手中的牌为:"+arr1);
// System.out.println("请农民2出牌");
// String nong2=scanner.next();
// int nongMin2Out=n.length();
// //删除农民1手中的牌
// for (int x=0;x<diZhuOut;x++){
// for (int y=0;y<arr.size();y++){
// if (arr2.get(y).charAt(0)==n.charAt(x)){
// arr2.remove(y);
// }
// }
// }
// System.out.println("农民2手中的牌为:"+arr2);
// if(nongMin1Out!=n.length()){
// System.out.println("出老千请重新出");
// }
}
}