java用集合的知识模拟简单的斗地主流程
问题描述
用java集合的知识简单的模拟斗地主的流程,包括发牌和看牌。
基本思路
1.首先准备一副扑克牌,一副扑克牌有54张,可用ArrayList来存储。比较特别的是大王和小王,直接添加进集合便可。
1.1剩下的52张牌有颜色和序号,用两个数组分别保存,然后循环遍历嵌套就能够生成。
2.洗牌
java中的Collections中的shuffle可以将牌打乱顺序。
3.发牌
发牌前先建立三个玩家和一个底牌的集合, 因为最后三张是给地主的。用for循环来一次给三位玩家发牌,剩余三张时停止。
代码如下
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
/*简单的斗地主案例*/
public class SamplePoker {
public static void main(String[] args) {
//1.准备牌
//定义一个能够储存54张牌的ArrayList集合,泛型用String
ArrayList<String> poker = new ArrayList<>();
poker.add("大王");
poker.add("小王");
//定义两个数组,一个数组存储花色,一个存储牌序号
String[] colors = {"♠","♣","♥","♦"};
String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
//循环嵌套遍历两个数组,组装52张牌
for (String color : colors) {
for (String number : numbers) {
//System.out.println(color+number);
poker.add(color+number);
}
}
//2.洗牌
Collections.shuffle(poker);
//3.发牌
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> other = new ArrayList<>();
for (int i = 0; i < poker.size(); i++) {
//先获取牌在判断!!!!!!!!!!!
String s = poker.get(i);
if(i>=51){
other.add(s);
}else if(i%3==0){
player1.add(s);
}else if(i%3==1){
player2.add(s);
}else if(i%3==2){
player3.add(s);
}
}
//4.看牌
System.out.println("玩家1:"+player1);
System.out.println("玩家2:"+player2);
System.out.println("玩家3:"+player3);
System.out.println("剩余底牌:"+other);
//5.把牌排序
/* System.out.println("==========================");
Arrays.sort(player1.toArray());
System.out.println(player1);*/
}
}