此程序模拟了斗地主存牌、洗牌、发牌、看牌的过程,入门拿来可以练练手!
一、实现文件展示
package com.tan.program;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
//模拟斗地主
public class Poker {
public static void main(String[] args) {
//创建HashMap,键是编号,值是牌
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
//创建ArrayList,存储编号
ArrayList<Integer> arrayList = new ArrayList<Integer>();
/*
54张牌
♦2,♦3,...,♦K,♦A
♥2,...
♣2,...
♠2,...
小王,大王
*/
//创建花色数组和点数数组
String[] colors = {"♦", "♥", "♣", "♠"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
//初始化编号
int index = 0;
//存储操作
for (String number : numbers) {
for (String color : colors) {
hashMap.put(index, color + number);
arrayList.add(index);
index++;
}
}
hashMap.put(index, "小王");
arrayList.add(index);
index++;
hashMap.put(index, "大王");
arrayList.add(index);
//随机洗牌
Collections.shuffle(arrayList);
//创建TreeSet,方便自动排序
//定义三个玩家:三名农民
TreeSet<Integer> farmer1 = new TreeSet<Integer>();
TreeSet<Integer> farmer2 = new TreeSet<Integer>();
TreeSet<Integer> farmer3 = new TreeSet<Integer>();
//定义三张底牌
TreeSet<Integer> dipai = new TreeSet<Integer>();
//发牌,也就是遍历集合,给玩家发牌
for (int i = 0; i < arrayList.size(); i++) {
int x = arrayList.get(i);
if (i >= arrayList.size() - 3) {
dipai.add(x);
}else if (i % 3 == 0) {
farmer1.add(x);
}else if (i % 3 == 1) {
farmer2.add(x);
}else if (i % 3 == 2) {
farmer3.add(x);
}
}
//看牌,也就是遍历手牌
lookPoker("农民1", farmer1, hashMap);
lookPoker("农民2", farmer2, hashMap);
lookPoker("农民3", farmer3, hashMap);
lookPoker("底牌", dipai, hashMap);
}
//看牌的方法(遍历TreeSet集合,获取编号,再到HashMap集合找对应的牌)
public static void lookPoker(String name, TreeSet<Integer> treeSet, HashMap<Integer, String> hashMap) {
System.out.print(name + "的牌是:");
for (Integer key : treeSet) {
String poker = hashMap.get(key);
System.out.print(poker + " ");
}
System.out.println();
}
}
二、运行效果展示