界面发红包
程序员文章站
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