日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java扑克牌(多线程)

發布時間:2024/8/26 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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扑克牌(多线程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。