当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 界面发红包

界面发红包

2020年07月28日  | 移动技术网IT编程  | 我要评论

红包的框架及图片

链接: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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网