Java扑克牌(多线程)
生活随笔
收集整理的這篇文章主要介紹了
Java扑克牌(多线程)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?這里將subList更換成遍歷賦值的方法,因為:【https://blog.csdn.net/feng8403000/article/details/114797903】
多線程的目的是加上倒計時,可以自己加。
package com.item.test;import java.util.*;public class Action {public static void main(String[] args) {//隨機卡牌List<Card> list=ResetCard(StartCard());//由于subList在修改的時候會出現異常,所以更換新地址 // List<Card> one=list.subList(0,17); // List<Card> two=list.subList(17,2*17); // List<Card> three=list.subList(2*17,3*17); // List<Card> four=list.subList(3*17,54);List<Card> one=new ArrayList<Card>();List<Card> two=new ArrayList<Card>();List<Card> three=new ArrayList<Card>();List<Card> four=new ArrayList<Card>();for (int i = 0; i < list.size(); i++) {if(i<17){one.add(list.get(i));}else if(i<2*17){two.add(list.get(i));}else if(i<3*17){three.add(list.get(i));}else{four.add(list.get(i));}}ShowCard(one,1);ShowCard(two,1);ShowCard(three,1);ShowCard(four,0);/*** 搶地主線程*/new Thread(new Runnable() {@Overridepublic void run() {Scanner sc = new Scanner(System.in);//存儲選擇分數的數組int[] array=new int[3];for (int i = 0; i < 3; i++) {System.out.println("請"+(i+1)+"號農民選擇分數或跳過:");System.out.println("1:1分、2:2分、3:3分、4:跳過");char choose = sc.next().charAt(0);switch (choose){case '1':array[i]=1;break;case '2':array[i]=2;break;case '3':array[i]=3;break;default:array[i]=0;break;}}if(array[0]==0&&array[1]==0&&array[2]==0){System.out.println("流局,請開啟下一輪");}int index=-1;int max=-1;//根據分數進行獲取地主或者流局for (int i = 0; i < array.length; i++) {if(max<array[i]){max=array[i];index=i;}}switch (index){case 0:one.addAll(four);break;case 1:two.addAll(four);break;case 2:three.addAll(four);break;}ShowCard(one,one.size());ShowCard(two,two.size());ShowCard(three,three.size());}}).run();}/*** 0、代表底牌\n17、代表農民\n20、代表地主* @param list* @param idName*/public static void ShowCard(List<Card> list,int idName){System.out.println(idName==17?"農民":(idName==20?"地主":"底牌"));for (Card c:DescCard(list)) {System.out.print(c.getName()+"\t");}System.out.println();}/*** 基本排序·Card的id由大到小* @param list* @return*/public static List<Card> DescCard(List<Card> list){Comparator<Card> cc=new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {return o1.getIndex()-o2.getIndex();}};Collections.sort(list,cc);//正序Collections.reverse(list);//倒序return list;}/*** 隨機排序* @param list* @return*/public static List<Card> ResetCard(List<Card> list){Collections.shuffle(list);return list;}/*** 初始化卡牌* @return*/public static List<Card> StartCard(){List<Card> list=new ArrayList<>(54);int i=0;for (CardsEnum cardsEnum:CardsEnum.values()) {for (CardColorEnum cardColorEnum:CardColorEnum.values()) {list.add(new Card(cardsEnum,cardColorEnum,i++));}}Card big=new Card();big.setName(CardBossEnum.BIG.getName());big.setIndex(i++);Card small=new Card();small.setName(CardBossEnum.SMALL.getName());small.setIndex(i++);list.add(small);list.add(big);return list;} }效果如下:
總結
以上是生活随笔為你收集整理的Java扑克牌(多线程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: List中subList方法抛出异常ja
- 下一篇: 需求管理规范