我们先来看一看要求
* 纸牌管理类
* 斗地主游戏
规则如下:
* 1.有三名玩家,可从控制台赋值玩家姓名,玩家中会有牌类集合的属性,还有是否是地主的状态
* 2.牌类有两个属性:花色和点数。花色有4种:黑红梅方(可用枚举)点数对应有13加上两张王牌(可用枚举)。
* 3.扑克牌管理类:用于产生54张随即顺序的牌堆(牌类集合,54张牌不变,变得是顺序),给玩家发牌,并随机产生地主,把剩余3张底牌给地主,并展示三位玩家的手牌。同时把手牌信息存入文件中
一,首先创建纸牌类
可以利用数组,也可以利用集合
先把花色和数字定义好,然后把大小王添加进去,接着利用递归的方法,将花色和数字一一对应,这里要注意下标的问题
public class Playcard { public static void main(String[] args)throws IOException { ArrayList<Integer> numCards = new ArrayList<>();//numcards为下标的集合 HashMap<Integer, String> cards = new HashMap<>();//cards为纸牌的集合,包括下标和纸牌数字花色 String[] num = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; String[] colour = {"♠", "♦", "♣", "♥"}; numCards.add(0); numCards.add(1); cards.put(0, "大王"); cards.put(1, "小王"); int a = 2; for (String s : colour) { for (String s1 : num) { numCards.add(a); cards.put(a, s + s1); a++; } } System.out.println("开始发牌");
二,下面把牌分成3份,先选出玩家和地主的牌,
for (int q = 0; q < 10; q++) { String b = "第" + (q + 1) + "次展示玩家和牌"; StringBuilder s2 = new StringBuilder(""); StringBuilder s3 = new StringBuilder(""); StringBuilder s4 = new StringBuilder(""); StringBuilder s5 = new StringBuilder(""); System.out.println(b); Collections.shuffle(numCards);//shuffle()方法是打乱顺序,这里打乱下标的顺序 ArrayList player1 = new ArrayList(); ArrayList player2 = new ArrayList(); ArrayList player3 = new ArrayList(); ArrayList master = new ArrayList(); for (int i = 0; i <= 53; i++) {//i为纸牌下标,遍历集合把牌分成三份 if (i <= 2) { master.add(numCards.get(i)); } else if (i % 3 == 1) { player1.add(numCards.get(i)); } else if (i % 3 == 2) { player2.add(numCards.get(i)); } else { player3.add(numCards.get(i)); } }
三,展示玩家的牌和地主牌
String s6 = "1号玩家的牌为:"; System.out.println(s6); for (int i = 0; i < player1.size(); i++) { System.out.println(cards.get(player1.get(i)));//cards调用get方法 s2 = s2.append(cards.get(player1.get(i))); } String s7 = "2号玩家的牌为:"; System.out.println(s7); for (int i = 0; i < player2.size(); i++) { System.out.println(cards.get(player2.get(i))); s3 = s3.append(cards.get(player2.get(i))); } String s8 = "3号玩家的牌为:"; System.out.println(s8); for (int i = 0; i < player3.size(); i++) { System.out.println(cards.get(player3.get(i))); s4 = s4.append(cards.get(player3.get(i))); } String s9 = "地主玩家的牌为:"; System.out.println(s9); for (int i = 0; i < master.size(); i++) { System.out.println(cards.get(master.get(i))); s5 = s5.append(cards.get(master.get(i))); } String s10 = b + "\n" + s6 + "\n" + s2 + "\n" + s7 + "\n" + s3 + "\n" + s8 + "\n" + s4 + "\n" + s9 + "\n" + s5 + "\n";//这里要注意换行,语句要注意一一对应 System.out.println("**************************"); System.out.println(s10);