Java实现斗地主案例
本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下
importjava.util.ArrayList;
importjava.util.Collections;
publicclassDemoPoker{
publicstaticvoidmain(String[]args){
/**
*一、准备牌
普通牌:2AK...3
花色:♥♠♣♦
王牌:大王小王
创建一个集合,把牌组装之后存进去
*/
String[]numbers={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
String[]colors={"♥","♠","♣","♦"};
ArrayListpokerBox=newArrayList<>();
for(Stringcolor:colors){
for(Stringnumber:numbers){
pokerBox.add(color+number);
}
}
pokerBox.add("大王");
pokerBox.add("小王");
/**
*二、洗牌
staticvoidshuffle(List>list)使用默认的随机源随机置换指定的列表。
此处为了输出结果工整所以没有直接输出集合
*/
Collections.shuffle(pokerBox);
for(inti=0;iplayer01=newArrayList<>();
//玩家二
ArrayListplayer02=newArrayList<>();
//玩家三
ArrayListplayer03=newArrayList<>();
//底牌
ArrayListdiPai=newArrayList<>();
for(inti=0;i=51){
diPai.add(faces);
}elseif(i%3==0){
player01.add(faces);
}elseif(i%3==1){
player02.add(faces);
}elseif(i%3==2){
player03.add(faces);
}
}
/**
*四、看牌
直接输出每位玩家的集合
*/
System.out.println("张无忌"+player01);
System.out.println("张翠山"+player02);
System.out.println("殷素素"+player03);
System.out.println("底牌"+diPai);
}
}
带排序版的
packagecom.demo_2.poker;
importjava.util.Collections;
importjava.util.HashMap;
importjava.util.LinkedList;
importjava.util.List;
publicclassPoker{
/**
*一共要四步。一、备牌二、洗牌三、发牌四、看牌
目的:练习集合的用法
*/
publicstaticvoidmain(String[]args){
/**
*第一步:备牌
使用List接口中的of()方法添加并分别创建numbers和colors集合
*/
//numbers:存储普通牌2、A、K...3从大到小
Listnumbers=List.of("2","A","K","Q","J","10","9","8","7","6","5","4","3");
//colors:存储四种花色♥、♠、♦、♣
Listcolors=List.of("♥","♠","♦","♣");
//创建一个Map集合存储索引和组装好的牌
HashMappokerBox=newHashMap<>();
//创建一个List集合储存牌的索引
LinkedListpokerIndex=newLinkedList<>();
//先把大王、小王和下标分别放进Map的键和值里面,再向LinkedList里面存储下标,下标增加1
intindex=0;
pokerBox.put(index,"大王");
pokerIndex.add(index);
index++;
pokerBox.put(index,"小王");
pokerIndex.add(index);
index++;
//组装牌:遍历两个List集合,使用Map接口中的put()方法给pokerBox添加键和值,并给LinkedList传下标
for(Stringnumber:numbers){
for(Stringcolor:colors){
pokerBox.put(index,color+number);
pokerIndex.add(index);
index++;
}
}
/**
*第二步:洗牌
使用Collocations类中的shuffler方法,传递参数pokerIndex
*/
Collections.shuffle(pokerIndex);
/**
*第三步:发牌
创建四个List集合,分别存储三位玩家和底牌
使用for循环遍历pokerIndex,i%3结果为0的给玩家1,1的给玩家2,2的给玩家3
*/
LinkedListplayer01=newLinkedList<>();
LinkedListplayer02=newLinkedList<>();
LinkedListplayer03=newLinkedList<>();
LinkedListdiPai=newLinkedList<>();
for(inti=0;i=51){
diPai.add(in);
}elseif(i%3==0){
player01.add(in);
}elseif(i%3==1){
player02.add(in);
}elseif(i%3==2){
player03.add(in);
}
}
//给玩家的牌排序,使用Collocations接口中的sort()方法排序
Collections.sort(player01);
Collections.sort(player02);
Collections.sort(player03);
Collections.sort(diPai);
/**
*第四步:看牌
遍历排过序的List集合作为Map集合的键值获取对应的值
为提高代码复用性定义一个方法代替
*/
print("令狐冲",player01,pokerBox);
print("诸葛瑾",player02,pokerBox);
print("司马懿",player03,pokerBox);
print("底牌",diPai,pokerBox);
}
/**
*看牌的方法:
参数:
Stringname
LinkedListlist
HashMapmap
*/
publicstaticvoidprint(Stringname,LinkedListlist,HashMapmap){
System.out.print(name+":");
for(Integerkey:list){
System.out.print(map.get(key)+"");
}
System.out.println();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。