界面发红包

红包的框架及图片

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

红包界面

在这里插入图片描述

普通红包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

手气红包

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值