欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

界面发红包

程序员文章站 2022-06-19 09:23:12
红包的框架及图片链接:https://pan.baidu.com/s/1zdY554ltgdMonAEk48KEQg提取码:o2lm代码框图:1)红包的框架 RedPacketFrame部分代码private String ownerName="爱谁谁"; //群主名称 private OpenMode openWay=null; //红包的类型,用接口 public RedPacketFrame(String title) //构造方法,tit...

红包的框架及图片

链接:https://pan.baidu.com/s/1zdY554ltgdMonAEk48KEQg
提取码:o2lm

代码框图:

界面发红包

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)普通红包代码(NormalMode):

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)手气红包代码(RandomMode)

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;
    }
}

红包界面

界面发红包

普通红包

界面发红包
界面发红包
界面发红包

手气红包

界面发红包

本文地址:https://blog.csdn.net/qq_45111873/article/details/107622467

相关标签: java界面红包