Java基础--斗地主发牌案例
package io.github.wangermaizi.day05;
/*
* 斗地主代码实现
* 1. 准备牌
* 2. 洗牌
* 3. 发牌
* 4. 看牌
* */
import io.github.wangermaizi.day03.Par;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class Doudizhu {
public static void main(String[] args) {
// 1. 准备牌
// 定义一个List用于存储的54张牌的集合, 类型是 String
ArrayList<String> poker = new ArrayList<>();
// 定义两个数组, 一个用于存储牌的花色, 一个用于存储牌的序号, 都是String类型
String[] colors = {"黑", "红", "梅", "方"};
String[] numbers = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
// 先把大王和小王存储到 扑克中
poker.add("大王");
poker.add("小王");
// 渲染嵌套两个数组, 组装成 剩下的52张牌
for (String number: numbers) {
for (String color: colors) {
String tempCard = number + color;
// 将每张牌存到 扑克中
poker.add(tempCard);
}
}
// 2. 洗牌 ==> Collections.shuffle直接改变原数组的内容
Collections.shuffle(poker);
// 3. 发牌
/*
* 定义四个集合, 用于存储三个玩家的牌和一套底牌
*
* */
// 4.
ArrayList<String> play1 = new ArrayList<>();
List<String> play2 = new ArrayList<>();
List<String> play3 = new ArrayList<>();
List<String> dipai = new ArrayList<>();
/*
* 变量改变排序的 54张排序
* */
System.out.println(poker.size());
// return;
for (int i = 0; i < poker.size(); i++) {
int rest = i % 3;
// 先留三张做底牌
if (i >= 51) {
dipai.add(poker.get(i));
} else {
switch (rest) {
case 1:
// 给第一个玩家牌, 后续以此类推
play1.add(poker.get(i));
break;
case 2:
play2.add(poker.get(i));
break;
case 0:
play3.add(poker.get(i));
break;
default:
throw new Error("程序出现不可预期的错误");
}
}
}
// 看牌
System.out.println("play1: "+ play1);
System.out.println("play2: "+ play2);
System.out.println("play3: "+ play3);
System.out.println("dipai: "+dipai);
}
}
**小结: **
当前只能完成做牌洗牌和发牌, 做好点话的话, 用过是将每张牌的信息存放到一个 map集合里面, 这样谁有叫地主的权利就可以被标记出来, 而在发牌的过程, 页面慢慢向选手手中追加牌的过程, 想简单粗暴点的话完全可以使用数组截取, 在洗牌结束之后, 直接分给玩家 17张牌并流3张底牌
网友评论