界面红包

批注 2020-07-27 213322.png
1)红包的框架 RedPacketFrame部分代码:
private String ownerName="爱谁谁";      //群主名称
    private OpenMode openWay=null;         //红包的类型,用接口

    public RedPacketFrame(String title)    //构造方法,title是界面标题
    {
        super(title);
        init();             //界面相关初始化的方法
    }

    public void setMoneyList(ArrayList<Integer> moneyList)
    {
        this.moneyList = moneyList;
    }

    public void setOwnerName(String ownerName)
    {
        this.ownerName = ownerName;
    }

    public void  setOpenWay(OpenMode openWay)
    {
        this.openWay = openWay;
    }
2)Myred代码:
package day12.redbag;

import day12.redbag.utils.RedPacketFrame;

public class MyRed extends RedPacketFrame
{

    public MyRed(String title)
    {
        super(title);
    }
}
3)OpenMode接口代码:
package day12.redbag.utils;

import java.util.ArrayList;

public interface OpenMode
{
    ArrayList<Integer> divide(int totalMoney, int totalCount);
}
4)Bootstrap代码:
package day12.redbag;
//红包界面启动程序
//普通红包之前介绍过
public class Bootstrap
{
    public static void main(String[] args)
    {
        //设置标题
        MyRed myRed=new MyRed("抢红包");
        //设置群主名
        myRed.setOwnerName("马云");
        //设置分发策略
        //设置普通红包
//        NormalMode normalMode = new NormalMode();
//        myRed.setOpenWay(normalMode);
        //设置随机红包
        RandomMode randomMode = new RandomMode();
        myRed.setOpenWay(randomMode);


    }

}
5)普通红包代码:
package day12.redbag;

import day12.redbag.utils.OpenMode;

import java.util.ArrayList;

public class NormalMode implements OpenMode
{
    @Override
    public ArrayList<Integer> divide(final int totalMoney, final int totalCount)
    {
        ArrayList<Integer> list = new ArrayList<>();
        int avg=totalMoney/totalCount;
        int mod=totalMoney%totalCount;
        for (int i = 0; i <totalCount-1 ; i++) {
            list.add(avg);
        }
        list.add(avg+mod);
        return list;
    }
}
6)手气红包代码:
package day12.redbag;

import day12.redbag.utils.OpenMode;

import java.util.ArrayList;
import java.util.Random;

public class RandomMode implements OpenMode
{
    @Override
    public ArrayList<Integer> divide( int totalMoney,  int totalCount)
    {
        /*
        *随机分配,totalMoney 单位是:分
        *最少一分钱,最多不超过剩下金额平均数的2倍,应该越发越少
        *随机金额公式:1+random.nextInt(最多不超过剩下金额平均数的2倍)
        * 随机金额公式:1+random.nextInt(leftMoney/leftCount*2)
        */
        ArrayList<Integer> list = new ArrayList<>();
        Random random = new Random();
        //分别代表剩下多少钱和剩下多少分
        int leftMoney=totalMoney;
        int leftCount=totalCount;
        //随机发钱n-1个,最后一个不需要随机
        for (int i = 0; i <totalCount-1 ; i++) {
            //随机出来的金额
            int money=1+random.nextInt(leftMoney/leftCount*2);
            //将随机出来的金额放入集合
            list.add(money);
            //应该越发越少
            leftCount--;//剩下的分数每次减一
            leftMoney-=money;
        }
        //处理最后一个
        list.add(leftMoney);
        return list;
    }
}
红包界面
批注 2020-07-27 193749.png
普通红包
批注 2020-07-27 193815.png

批注 2020-07-27 193828.png
批注 2020-07-27 193840.png
手气红包
批注 2020-07-27 201302.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容