斗地主游戏
程序步骤:
1.准备牌
2.洗牌
3.发牌
4.看牌
package com.collection.LandlordGame;
import java.util.ArrayList;
import java.util.Collections;
public class Game {
public static void main(String[] args) {
//1.准备牌
//定义一个储存54张牌的ArrayList集合,泛型使用String
ArrayList<String> poker = new ArrayList<>();
//定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
String[] colors={"方片","梅花","红桃","黑桃"};
String[] numbers={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//先把特殊的大王、小王加入到集合中
poker.add("大王");
poker.add("小王");
// 嵌套输出两个数组
for (String num:numbers) {
for (String col:colors) {
//System.out.println(col+num);测试的时候打开
//把组装好的牌放到集合中
poker.add(col+num);
}
}//System.out.println(poker);看54张牌进入集合中测试的时候打开
/*2.洗牌 用到集合的工具类 Collections 的静态方法,直接类名.方法调用
static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
*/
Collections.shuffle(poker);//对集合进行随机置换。
/* System.out.println(poker);
System.out.println(poker.size());这两行测试用*/
//3.发牌 创三个集合接收牌,和一个底牌集合
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
//把大集合poker的元素分配给四个小集合
for (int i = 0; i < poker.size(); i++) {
String p=poker.get(i);
if(i>=51){
dipai.add(p);
}else if (i%3==0){
player1.add(p);
}else if (i%3==1){
player2.add(p);
}else if (i%3==2){
player3.add(p);
}
}
//4.看牌
System.out.println("韦老六:"+player1);
System.out.println("李老三:"+player2);
System.out.println("熊老九:"+player3);
System.out.println("底牌:"+dipai);
//一 for (int i = 0; i < player1.size(); i++) {//普通for循环遍历
// System.out.print(player1.get(i));
//
// }
// System.out.println("================================");
// 二 for (String a:player2) {//增强for循环遍历
// System.out.print(a);
// }
// 三 迭代器遍历
//
// System.out.println("================================");
// Iterator<String> it = poker.iterator();
// while (it.hasNext()){
// String next = it.next();
// System.out.print(next);
// }
}
}
测试结果图:
/*发的牌每一次的不一样
韦老六:[大王, 小王, 黑桃A, 黑桃2, 梅花9, 黑桃5, 红桃Q, 方片3, 梅花8, 红桃A, 黑桃10, 方片8, 黑桃Q, 梅花J, 梅花4, 红桃K, 方片6]
李老三:[梅花10, 方片A, 方片K, 红桃9, 黑桃6, 方片9, 黑桃9, 方片Q, 梅花7, 红桃J, 黑桃J, 黑桃8, 梅花6, 红桃3, 梅花A, 红桃7, 方片5]
熊老九:[梅花K, 方片7, 方片4, 方片J, 梅花5, 黑桃3, 红桃8, 红桃2, 黑桃7, 红桃4, 红桃10, 黑桃4, 方片2, 黑桃K, 方片10, 红桃6, 梅花2]
底牌:[红桃5, 梅花3, 梅花Q]*/