以前小时候经常玩这个,规则就是一人一半扑克,我先放一张,只能拿手里的第一张牌,你也拿你手里的第一张,如果相同了你就全拿走,不相同我再拿一张,如果我的牌和之前两张有一张相同了,从那张开始到后面的全归我。
代码:
public class Mytest {
private static volatile Integer q= 0;
private static volatile Integer k= 0;
public static void main(String[] args) {
List<String> list1= new ArrayList<>();
List<String> list2= new ArrayList<>();
List<String> list3= new ArrayList<>();
List<String> list4= new ArrayList<>();
String[] color = {"红桃","梅花","黑桃","方片"};
String[] cardValue = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
Set<String> set = new HashSet<>();
set.add("大王S");
set.add("小王S");
for (String s : color) {
for (String s1 : cardValue) {
set.add(s+s1);
}
}
//发牌
boolean flag = true;
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
if (flag){
list1.add(iterator.next());
Collections.shuffle(list1);
flag = false;
}else {
list2.add(iterator.next());
Collections.shuffle(list2);
flag = true;
}
}
System.out.println(list1);
System.out.println(list2);
list3.add(list1.get(0).substring(2));
list4.add(list1.get(0));
list1.remove(0); //玩家1在桌面放一张扑克
guoMe(list1, list2, list3, list4);
}
private static void guoMe(List<String> list1, List<String> list2, List<String> list3, List<String> list4) {
if (list1.size()>0 && list2.size()>0){ //如果谁手里扑克耗尽Game Over
if (list3.contains(list2.get(0).substring(2))){ //判断玩家2的牌和桌面的牌是否一致,如果一致,就收取一致的那张扑克之后的扑克(备注判断扑克一致不需要判断花色)
list3.add(list2.get(0).substring(2));
list4.add(list2.get(0));
for (int i = 0; i < list3.size(); i++) {
if(list2.get(0).substring(2).equals(list3.get(i))){
q=i;
break;
}
}
list2.remove(0); //无论拿出的牌是否和桌面牌一致,都放上去
System.out.println("剩余list2"+list2);
System.out.println("剩余list4"+list4);
List<String> temList = new ArrayList<>();
for (int i = q; i < list4.size(); i++) { //收取扑克
list2.add(list4.get(i));
temList.add(list4.get(i));
}
for (int i = 0; i < list4.size(); i++) {
for (String s1 : temList) {
if (list4.get(i).equals(s1)){
list4.remove(s1);
list3.remove(s1.substring(2));
}
}
}
//收牌之后自己放牌
list3.add(list2.get(0).substring(2));
list4.add(list2.get(0));
list2.remove(0);
}else {
list3.add(list2.get(0).substring(2)); //牌不一样,就放下牌
list4.add(list2.get(0));
list2.remove(0);
System.out.println("剩余list2"+list2);
System.out.println("剩余list4"+list4);
}
if (list3.contains(list1.get(0).substring(2))){
list3.add(list1.get(0).substring(2));
list4.add(list1.get(0));
for (int i = 0; i < list3.size(); i++) {
if(list1.get(0).substring(2).equals(list3.get(i))){
k=i;
break;
}
}
list1.remove(0);
System.out.println("剩余ist1"+list1);
System.out.println("剩余list4"+list4);
List<String> temList2 = new ArrayList<>();
for (int i = k; i < list4.size(); i++) {
list1.add(list4.get(i));
temList2.add(list4.get(i));
}
for (int i = 0; i < list4.size(); i++) {
for (String s1 : temList2) {
if (list4.get(i).equals(s1)){
list4.remove(s1);
list3.remove(s1.substring(2));
}
}
}
//收牌之后自己放牌 TODO
list3.add(list1.get(0).substring(2));
list4.add(list1.get(0));
list1.remove(0);
}else {
list3.add(list1.get(0).substring(2));
list4.add(list1.get(0));
list1.remove(0);
System.out.println("剩余list1"+list1);
System.out.println("剩余list4"+list4);
}
System.out.println("list1:"+list1.size()+"--"+list1);
System.out.println("list2:"+list2.size()+"--"+list2);
System.out.println("list4:"+list4.size()+"--"+ list4);
guoMe(list1, list2, list3, list4);
}else {
System.out.println("OVER");
System.out.println("list1:"+list1.size());
System.out.println("list1:"+list2.size());
System.out.println("list4:"+list4.size());
}
}
}