java实战——制造扑克牌打乱的效果(使用android studio)

java实战——制造扑克牌打乱的效果(使用android studio)_第1张图片

准备工作

新建一个Poker的包,在Poker里新建一个Myclass和Poker(用来记录扑克牌的数据)的类


这里会有一个经常出现的报错(编码GBK不可映射字符)解决方法:需要在每个build.gradle中加入一串固定的代码(具体操作请见我的另一篇文章《java编程中的一些小知识》一文)

先生成一副扑克牌

一、用面向过程的方法(没有打乱效果)

Myclass.java

public class Myclass {
    public static void main(String[] args) {
        

        {
            //生成一副牌
            //准备一个数组保存所有点数
            String[] dots = new String[]{
                    "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"
            };
            //准备一个数组保存所有点数
            String[] pics = new String[]{
                    "♣", "♦", "♥", "♠"
            };

            //数组保存所有的扑克牌
            Poker[] pokers = new Poker[52];

            int index = 0;
            for(String dot:dots){
                for(String pic:pics){
                    //创建一张牌
                    Poker poker = new Poker();
                    poker.dot = dot;
                    poker.pic = pic;
                    pokers[index] = poker;
                    index++;
                }
            }
            //输出一副牌
            for(Poker poker:pokers){
                System.out.print(poker.dot+poker.pic+" ");
            }
        }
        }
    }

Poker.java

package com.example.lib.Poker;

/**
 * @Description
 * @Author 空添
 */

/**
*一副牌的点数:2 3 4 5 6 7 8 9 10 J Q K A
 * 一副牌的花色:♠ ♣ ♥ ♦
*/
public class Poker {
    public String dot;//记录点数
    public String pic;//记录花色
}

输出结果:
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♠ Q♣ Q♦ Q♥ Q♠ K♣ K♦ K♥ K♠ A♣ A♦ A♥ A♠

二、用面向对象的方法

1.分析功能、抽取类:PokerManage和Poker
2.开始实现功能:
1.Poker类,管理一张牌(花色、点数)
2.PokerManage类,管理一副牌的所有操作(生成、洗牌、显示)
Poker,java

package com.example.lib.Poker1;

/**
 * @Description
 * @Author 空添
 */
public class Poker {
    private String dot;//记录点数
    private String pic;//记录花色

    //提供构造方法
    public Poker(String dot, String pic) {
        this.dot = dot;
        this.pic = pic;
    }

    //提供set和get方法
    public String getDot() {
        return dot;
    }

    public void setDot(String dot) {
        this.dot = dot;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    //重写toString方法便于调试
    @Override
    public String toString() {
        return  dot+pic ;
    }
}

Constants.java

package com.example.lib.Poker1;

/**
 * @Description
 * @Author 空添
 */
public class Constants {
    //点数,加static以后可以直接调用,不用创建对象
    //final 修饰成员变量表示这是一个常量,不能被更改,而这个常量通常使用大写字母
    public static final String[] POKER_DOTS = new String[]{
            "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"
    };

    //花色
    public static final String[] POKER_PICS = new String[]{
            "♣", "♦", "♥", "♠"
    };
}

PokerManager.java

package com.example.lib.Poker1;

import java.util.Collections;

/**
 * @Description
 * @Author 空添
 */
public class PokerManage {
    //保存一副牌
    private java.util.ArrayList pokers;

    //实现构造方法
    public PokerManage(){
        //初始化数组
        pokers = new java.util.ArrayList<>();
    }

    //生成一副牌
    public void genersteOnePokerCards(){
        for (int i = 0; i < Constants.POKER_DOTS.length ; i++) {
            //取出i对应的点数
            String dot = Constants.POKER_DOTS[i];
            //为这个点数创建四种花色
            for (int j = 0; j 

MyClass.java

package com.example.lib.Poker1;

import java.util.Collections;

/**
 * @Description
 * @Author 空添
 */
public class MyClass {
    public static void main(String[] args) {
        //创建管理器
        PokerManage manager = new PokerManage();
        //生成一副牌
        manager.genersteOnePokerCards();
        //洗牌
        manager.shuffle();
        //显示一副牌
        manager.show();

    }
}

输出结果:
3♠9♦5♠K♦4♣4♥10♣K♣
8♣9♥6♥2♦6♦6♣Q♣2♣
A♥10♥7♣9♣4♠3♣5♦Q♠
J♦10♠7♥J♣J♥A♦J♠3♥
Q♦5♣8♠2♠8♥K♠7♠A♠
10♦9♠Q♥K♥8♦4♦6♠2♥
A♣7♦3♦5♥

你可能感兴趣的:(java实战——制造扑克牌打乱的效果(使用android studio))