扑克牌
游戏规则
规则:三个玩家,每个人轮流抽牌。
分析规则
- 1先买一副扑克牌 52张牌 4个花色
- 洗牌
- 抽牌
分析
首先有一张牌,才能有整个扑克牌
所以我们先创建一张牌的对象(Poker),Poker对象中包含的成员有描述的花色和数字,以及初始化的构造方法;然后再创建一整个扑克牌,Pokers对象中包含的成员有买扑克牌的方法、交换的方法、洗牌的方法,其中买扑克牌的方法里面我们自定义类型的集合专门存放52张扑克牌,洗牌的方法里面运用了产生随机数发生器(Random)
代码
Poker
public class Poker {
private String suit;//牌色
private int num;//数字
public Poker(String suit, int num) {
this.suit = suit;
this.num = num;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return String.format("[%s,%d]",suit,num);
}
}
Pokers
public class Pokers {
public List<Poker> buyPoker(){
List<Poker> list=new ArrayList<>(52);//13*4=52
String[] suits={"♠","♥","♣","♦"};
for (int i = 0; i < suits.length; i++) {
for (int j = 1; j <= 13 ; j++) {
String suit=suits[i];
int num=j;
Poker poker=new Poker(suit,num);
list.add(poker);
}
}
return list;
}
//交换
public void Swap(List<Poker> list,int i,int j){
Poker temp=list.get(i);
list.set(i,list.get(j));
list.set(j,temp);
}
//洗牌可以理解为互相交换牌
public void Shuffle(List<Poker> list){
Random random=new Random();//随机数发生器
//注意这里是i从最后的元素开始,这样会让牌洗的更干净
for (int i = list.size()-1; i > 0; i--) {
int ret=random.nextInt(i);//随机生成【0,i)之间的数字
Swap(list,i,ret);
}
}
}
TestDemo(测试)
public class TestDemo {
public static void main(String[] args) {
Pokers pokers=new Pokers();
System.out.println("刚买的扑克牌");
List<Poker>list=pokers.buyPoker();
System.out.println(list);
System.out.println("开始洗牌");
pokers.Shuffle(list);
System.out.println(list);
List<List<Poker>> listPeople=new ArrayList<>(3);
//这里要小心:没有创建(add)是无法获得(get)
listPeople.add(new ArrayList<>());
listPeople.add(new ArrayList<>());
listPeople.add(new ArrayList<>());
//三个人,每个人轮流抓5张牌-相当于二维数组,3行5列
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
//remove方法是删除原来的牌+返回删除的元素
listPeople.get(j).add(list.remove(0));
}
}
int i=0;
for (List<Poker> people:listPeople) {
i++;
System.out.println("第"+i+"个人手中的牌:");
System.out.print(people);
System.out.println();
}
//剩余的牌
System.out.println("剩余的牌有:");
System.out.println(list);
}
}
本文介绍了如何使用JAVA来实现一个三人扑克牌游戏。包括游戏规则、规则分析以及关键代码实现,如Poker类、Pokers类和测试用例。通过创建Poker对象表示单张牌,再构建Pokers类来管理并操作整副扑克牌,实现洗牌和抽牌功能。
2872

被折叠的 条评论
为什么被折叠?



