需求:
1.准备一副牌(数组长度:54)
2.洗牌(Math.radon)
3.发牌(嵌套循环)
4.每人十七张 (新数组)
5.选地主(scanner)
6.将底牌给地主(数组扩容)
7.展示每个人的手牌(print)
代码:
import java.util.Arrays;
import java.util.Scanner;
/**
* @Author: Bun
* @Version: 1.0
* @Date: 2022/9/26-18:53
* @Name: 斗地主发牌
*/
public class HomeWork3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String poke[] = {"黑桃2", "梅花2", "方块2", "红桃2", "黑桃3", "梅花3", "方块3", "红桃3", "黑桃4", "梅花4",
"方块4", "红桃4", "黑桃5", "梅花5", "方块5", "红桃5", "黑桃6", "梅花6", "方块6", "红桃6", "黑桃7",
"梅花7", "方块7", "红桃7", "黑桃8", "梅花8", "方块8", "红桃8", "黑桃9", "梅花9", "方块9", "红桃9",
"黑桃10", "梅花10", "方块10", "红桃10", "黑桃J", "梅花J", "方块J", "红桃J", "黑桃K", "梅花K",
"方块K", "红桃K", "黑桃Q", "梅花Q", "方块Q", "红桃Q", "黑桃A", "梅花A", "方块A", "红桃A",
"小王", "大王"};
System.out.println(poke.length);
//打乱数组顺序
for (int i = 0; i < poke.length; i++) {
int rand = (int) (Math.random() * poke.length);
String temp = poke[rand];
poke[rand] = poke[i];
poke[i] = temp;
}
//发牌
String[] poke1 = new String[17];
String[] poke2 = new String[17];
String[] poke3 = new String[17];
int a = 0, b = 1, c = 2, A = 0, B = 0, C = 0;
for (int i = 0; i < 51; i++) {
if (i == a) {
poke1[A] = poke[i];
A++;
a += 3;
} else if (i == b) {
poke2[B] = poke[i];
B++;
b += 3;
} else if (i == c) {
poke3[C] = poke[i];
C++;
c += 3;
}
}
//抢地主
boolean G = true;
while (G) {
System.out.println("谁是地主? 1/2/3");
int choose = input.nextInt();
int g = 17;
switch (choose) {
case 1:
poke1 = Arrays.copyOf(poke1, poke1.length + 3);
for (int i = 51; i < 54; i++) {
poke1[g++] = poke[i];
}
System.out.println("一号是地主");
G = false;
break;
case 2:
poke2 = Arrays.copyOf(poke2, poke2.length + 3);
for (int i = 51; i < 54; i++) {
poke2[g++] = poke[i];
}
System.out.println("二号是地主");
G = false;
break;
case 3:
poke3 = Arrays.copyOf(poke3, poke3.length + 3);
for (int i = 51; i < 54; i++) {
poke3[g++] = poke[i];
}
System.out.println("三号是地主");
G = false;
break;
default:
break;
}
}
System.out.println(Arrays.toString(poke1));
System.out.println(Arrays.toString(poke2));
System.out.println(Arrays.toString(poke3));
}
}
remake
import java.util.Arrays;
import java.util.Scanner;
/**
* @Author: Bun
* @Version: 1.0
* @Date: 2022/9/27-10:16
* @Name: 斗地主remake
*/
public class HomeWork3Remake {
public static void main(String[] args) {
//准备牌组
String[] poke = new String[54];
Scanner input = new Scanner(System.in);
String[] color = {"方块", "梅花", "红桃", "黑桃"};
String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
String[] king = {"小王", "大王"};
//设置索引
int index = 0;
//设置牌组
for (int i = 0; i < color.length; i++) {
for (int j = 0; j < numbers.length; j++) {
poke[index++] = color[i] + numbers[j];
}
}
poke[index++] = king[0];
poke[index] = king[1];
System.out.println("展示牌组:");
System.out.println(Arrays.toString(poke));
//洗牌
for (int i = 0; i < poke.length; i++) {
//随机一张牌
int randomIndex = (int) (Math.random() * poke.length);
//互换
String temp = poke[i];
poke[i] = poke[randomIndex];
poke[randomIndex] = temp;
}
System.out.println("洗牌后: " + Arrays.toString(poke));
//开始发牌
String[] poke1 = new String[17];
int A = 0;
String[] poke2 = new String[17];
int B = 0;
String[] poke3 = new String[17];
int C = 0;
//-3:留3张底牌
for (int i = 0; i < poke.length - 3; i++) {
// 0 3 6 %3==0
if (i % 3 == 0) {
poke1[A++] = poke[i];
} else if (i % 3 == 1) {
poke2[B++] = poke[i];
} else if (i % 3 == 2) {
poke3[C++] = poke[i];
}
}
//选地主
boolean G = true;
while (G) {
System.out.println("谁是地主? 1/2/3");
int choose = input.nextInt();
switch (choose) {
case 1:
poke1 = Arrays.copyOf(poke1, poke1.length + 3);
poke1[A++] = poke[poke.length - 1];
poke1[A++] = poke[poke.length - 2];
poke1[A] = poke[poke.length - 3];
G = false;
break;
case 2:
poke2 = Arrays.copyOf(poke2, poke2.length + 3);
poke2[A++] = poke[poke.length - 1];
poke2[A++] = poke[poke.length - 2];
poke2[A] = poke[poke.length - 3];
G = false;
break;
case 3:
poke3 = Arrays.copyOf(poke3, poke3.length + 3);
poke3[A++] = poke[poke.length - 1];
poke3[A++] = poke[poke.length - 2];
poke3[A] = poke[poke.length - 3];
G = false;
break;
default:
break;
}
}
System.out.println(Arrays.toString(poke1));
System.out.println(Arrays.toString(poke2));
System.out.println(Arrays.toString(poke3));
}
}
ps:两个都能跑,但我更中意remake