/**
*
* 模拟斗地主发牌1.0
*
* @author 三一
*
* @time 2018-4-28
*
*/
class Test {
// 定义数组成员
private static int[] cards;
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个数组存放扑克牌数
cards = init();
// 玩家手牌声明,并进行发牌,此时还是数值1到54
int[] plater1 = deal(17);
int[] plater2 = deal(17);
int[] plater3 = deal(17);
System.out.println("玩家1的手牌为:" + carsInfo(plater1));
System.out.println("玩家2的手牌为:" + carsInfo(plater2));
System.out.println("玩家3的手牌为:" + carsInfo(plater3));
// 输出底牌
System.out.print("底牌为:");
for (int i = 0; i < cards.length; i++) {
if (cards[i] != -1) {
System.out.print(carsInfo(cards[i]) + ",");
}
}
}
// 扑克牌赋值
public static int[] init() {
cards = new int[54];
// 扑克牌赋值1-54
for (int i = 0; i < cards.length; i++) {
cards[i] = i + 1;
}
return cards;
}
// 发牌
public static int[] deal(int count) {
// 定义一个数组,一副牌count张
int[] resultCard = new int[count];
// 随机发牌
for (int j = 0; j < resultCard.length;) {
// 值
int ram = (int) (Math.random() * 54);// 强制转换为int,取值范围为[0,53]
int card = cards[ram];// 随机抽取的牌
if (card >= 0) {// 抽取到未标识的牌
cards[ram] = -1;// 数组原数标记为-1.表示这张牌已经被取过了
resultCard[j] = card;
j++;// 循环继续
}
}
return resultCard;
}
// 求扑克牌的花色与点数方法
public static String carsInfo(int card) {
// 定义一个字符串
String result = "";
// 小鬼大鬼的判断
if (card == 53) {
return "小鬼";
}
if (card == 54) {
return "大鬼";
}
// 花色的判断
// (card-1)是为了更好地计算花色,1-13->0-12是一样的道理
int color = (card - 1) / 13;
switch (color) {
case 0:
result = "黑桃";
break;
case 1:
result = "红桃";
break;
case 2:
result = "梅花";
break;
case 3:
result = "方片";
break;
default:
result = "错误花色!";
break;
}
// 判断牌面值
int point = card % 13;
switch (point) {
case 1:
result += "A";
break;
case 11:
result += "J";
break;
case 12:
result += "Q";
break;
case 0:
result += "K";
break;
default:
result += point + "";
break;
}
return result;
}
// 遍历
public static String carsInfo(int[] cards) {
String result = "";
// 循环扑克数组
for (int i = 0; i < cards.length; i++) {
int cu = cards[i];
// 当前遍历的扑克代码
String cus = carsInfo(cu);
// 追加到结果字符串
result += cus;// 追加到结果字符串
if (i != cards.length - 1) {
result += ",";
}
}
return result;
}
}