结合面向对象设计原则,分析和设计模拟扑克牌游戏的洗牌过程。
- 编程定义一个表示扑克牌的类 Poke,用 suit 来表示扑克牌的花色,用 face 来表示扑克牌的
牌面值,每副牌为 52 张,不考虑包含大小王。 - 假设扑克牌游戏需要 2 付 (或 2 付以上)的牌,请编程实现模拟洗牌,以及将这些扑克牌分
给参加游戏的所有人,并将参加扑克牌游戏的所有人的扑克牌输出。 - 实现 Poke 类中包含的 4 个静态方法,所实现的 Poke 类在 PokeTest 的 main 方法中进行测试,
请阅读 main 方法的代码,并根据其中逻辑猜测 Poke 类中静态方法的行为并编写方法实现
代码。
非常简单,直接放代码
Poke.java
package exp2;
import java.util.Random;
public class Poke {
private static char[] suit={'♥','♦','♣','♠'};
private static String size[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
public static String[] createCard(int num)
{
String[] card=new String[52*num];
int k=0;
for(int m=0;m<num;m++)
for(int i=0;i<4;i++)
for(int j=0;j<13;j++)
{
card[k]=suit[i]+size[j];
k++;
}
return card;
}
public static void display(String[] card)
{
for(String c:card)
{
System.out.print(c+" ");
}
}
public static void shuffle(String[] card)
{
for(int i=1;i<card.length;i++)
{
Random random=new Random();
String c=card[i];
int n= random.nextInt(i);
card[i]=card[n];
card[n]=c;
}
}
public static void distribute(String[] card,int per)
{
for(int i=0;i<per;i++)
{
System.out.println("第"+(i+1)+"个人的牌如下:");
for(int j=i*card.length/per;j<(i+1)*card.length/per;j++)
{
System.out.print(card[j]+" ");
}
System.out.print("\n");
}
}
}
PokeTest.java
package exp2;
import java.util.Scanner;
public class PokeTest {
public static void main(String[] args) {
System.out.println("该扑克游戏需要几付扑克牌?");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String[] cards = Poke.createCard(num);
System.out.println("该扑克游戏有几个玩家?");
Scanner sp = new Scanner(System.in);
int per = sp.nextInt();
System.out.println("\n显示所有的牌:");
Poke.display(cards);
Poke.shuffle(cards);
System.out.println("\n显示分配给每个人的牌:");
Poke.distribute(cards, per);
}
}