Java开发之阴阳师概率抽卡大揭秘

Java开发之阴阳师概率抽卡大揭秘

相信很多人都有玩过阴阳师手游,其中最让人着迷的便是它的抽卡机制,那么如何简单实现阴阳师的概率抽卡功能呢?

项目环境

本项目的开发只需要具备Java虚拟机就可以,这里作者使用的是intelij开发编辑器,当然eclipse等任意编辑器都可以,下面是工程目录结构。

项目简介 在这里你需要简单的创建四个类,Main,Card,CardPool,GetCard这四个类,四个类统一放在了Card_Rate下。

Card.calss源码如下

package Card_Rate;
public class Card {String SSR[]={"一目连","彼岸花","荒川之主"};//概率为6%String SR[]={"姑获鸟","金鱼姬","弈"};//概率为10%String R[]={"鲤鱼精","山兔","河童"};//概率为20%String N[]={"涂壁","灯笼鬼","齿舌"};//概率为64%
}

CardPool.calss源码如下

package Card_Rate;
import java.util.ArrayList;
import java.util.Random;
public class CardPool {//功能:创建一个卡池,卡池里放好式神卡片,根据卡片数量来定,卡池容量定为100ArrayList cardpool = new ArrayList();//卡池int count=100;//卡池容量/*卡池填充*/public void fullCard() {Card card = new Card();Random ra = new Random();//循环6张SSR卡for (int i = 0; i < 6; i++) {int num=ra.nextInt(3) ;// 随机产生0-2三种数字cardpool.add(card.SSR[num]+"SSR");}//循环10张SR卡for (int i = 0; i < 10; i++) {int num=ra.nextInt(3) ;// 随机产生0-2三种数字cardpool.add(card.SR[num]+"SR");}//循环20张R卡for (int i = 0; i < 20; i++) {int num=ra.nextInt(3) ;// 随机产生0-2三种数字cardpool.add(card.R[num]+"R");}//循环64张N卡for (int i = 0; i < 64; i++) {int num=ra.nextInt(3) ;// 随机产生0-2三种数字cardpool.add(card.N[num]+"N");}// System.out.println("卡池:"+cardpool);// System.out.println("卡池容量:"+cardpool.size());}public int cardpoolnum(){return cardpool.size();//获取当前卡池式神数量}public void allcard(){System.out.println(cardpool);//输出卡池所以式神}public Object getonecard(CardPool cardPool){//从卡池中随机抽出一张牌Random random=new Random();int size=cardpool.size();if(size==0){fullCard();//卡池容量清零则填充System.out.println("-----卡池刷新------");size=cardpool.size();//size重新赋值System.out.println("卡池刷新后容量:"+size);}int i=random.nextInt(size);//随机0-size-1的整数,size为卡池当前抽卡后的数Object object=cardpool.get(i);System.out.println("抽到的式神为:"+cardpool.get(i));cardpool.remove(i);//将抽取到的卡牌移除System.out.println("卡剩余式神数:"+cardpool.size());//System.out.println(cardpool.get(i));return object;}
}

GetCard.class源码如下

package Card_Rate;public class GetCard {/*卡池抽一张少一张count--*/public void getoneCard(CardPool  cardPool) {System.out.println("当前为单抽");cardPool.getonecard(cardPool);//单抽}public void gettenCard(CardPool  cardPool) {System.out.println("-------------------------");System.out.println("当前为十连抽");for(int i=0;i<10;i++){cardPool.getonecard(cardPool);//十连抽}}public void gethuandrendCard(CardPool  cardPool) {System.out.println("-------------------------");System.out.println("当前为百连抽");for (int i = 0; i < 100; i++) {cardPool.getonecard(cardPool);//十连抽}}
}

Main.class源码如下

package Card_Rate;
public class Main {public static void main(String[] args) {CardPool cardPool=new CardPool();GetCard getCard=new GetCard();cardPool.fullCard();//初始化卡池容量填满为100System.out.print("卡池总量:");System.out.println(cardPool.cardpoolnum());getCard.gethuandrendCard(cardPool);//百连抽getCard.gettenCard(cardPool);//十连抽getCard.getoneCard(cardPool);//单抽}
}

好了,四个类的代码都已经了解,大家可以运行一下试一试,下面介绍一下思路来源,首先是Card类里面存放的是SSR,SR,R和N卡等式神,可以不断填充新的式神进来。CardPool是式神池,也就是一堆各种各样的式神都放在这里,将SSR,SR,R,N卡式神打乱,玩家就需要从这里面抽卡了,抽卡类是GetCard类,这里编写了单抽、十连抽和百连抽方法,当然,由于我们这里用的是式神池,所以当一波式神抽完之后就必须刷新一波新的式神,否则就抽不到新的式神了。

最后在贴图来一波运行的结果图:


不知道大家看到没有,抽个SSR完全靠运气啊,有的时候抽几个就有SSR了,有的时候抽完所有都没碰到,这里SSR就直接在前五个之后就抽到了。

卡池刷新图


这是一波卡池抽完之后刷新的另一波卡池。
关于eclipse运行本项目报错原因:将Main.class类名改为Test.class
如果大家有什么不懂得地方,可以联系作者的QQ:1175929184

Java开发之阴阳师概率抽卡大揭秘相关推荐

  1. java阴阳师抽卡概率_阴阳师的抽卡活动概率究竟是真是假?

    哈喽各位小伙伴们大家好啊,最近随着铃鹿御前的上线阴阳师又开启了新一轮的抽卡活动,不知道各位小伙伴们有没有抽到自己心仪的式神呢?又是用了多少张票抽到的呢? 抽卡活动概率究竟是真是假 众所周知像阴阳师这样 ...

  2. java 做的原神抽卡模拟小程序

    java做的原神抽卡模拟小程序 难度不大,适合学完面向对象后做着玩. import java.util.ArrayList; import java.util.Calendar; import jav ...

  3. java开发培训好学习吗?难度大不大?

    ​ 互联网快速的发展,不断的在进行变革和更新,越来越多的人都对这个行业充满向往,很多人都想要学习java技术,那么java开发培训好学习吗?难度大不大?来看看下面的详细介绍. java开发培训好学习吗 ...

  4. Java开发人员经常犯的10大错误

    我们在这里总结了Java开发人员经常犯的十大错误,看看你中了几个? 1.将Array转换为ArrayList 要将Array转换为 ArrayList,开发人员通常会这样做: List<Stri ...

  5. 利用Python实现阴阳师自动抽卡

    Linux编程 点击右侧关注,免费入门到精通! 作者丨Meowcolm024 https://www.jianshu.com/p/b45416bed86f 前言 现在版本官方已经有了自动御魂.觉醒和探 ...

  6. 我用java分析了原神抽卡记录

    起因 我们都知道原神抽卡是有保底机制的,但是游戏里面只能按页查看抽卡记录,并没有各种数据统计,为了能够优化大家的游戏体验,本文就带大家用java爬虫来获取抽卡信息. 抽卡信息api解析 由于我用的是安 ...

  7. JAVA编译一个原神抽卡模拟器

    import java.util.Random;import java.util.Scanner;public class Chouka {final static String[] sanxingw ...

  8. 阴阳师模拟抽卡[含源码]

    实现方式 HTML + JavaScript 实现效果 概率可自行在代码中修改,默认为概率UP 为了好看我加入了鼠标插件,鼠标按住右键不放画图案,仅仅是画图而已 (实际单击右键抽卡) 单击右键进行抽卡 ...

  9. Java开发人员应该知道的5大Spring Boot功能

    您可能已经听说过Spring Boot,这是用不到140个字符创建一个Spring Web应用程序的神奇力量,可以在一条推文中编写这些字符,但这到底意味着什么? 哪些功能可以使Spring Boot具 ...

最新文章

  1. 「镁客·请讲」深睿医疗乔昕:AI医疗才起步,说变革尚早
  2. 2021暑假实习-SSM超市积分管理系统-day09笔记
  3. 使用NOSQL的MongoDB时建立索引需要注意的几点建议和Explain优化分析
  4. ZF2系列 – Zend Framework 2 MVC實作 (Part 3)
  5. Redis 多机多节点集群搭建方案(5.0版本)
  6. 实现div在固定区域跟随鼠标移动点击拖动而产生的变化
  7. Linux多线程与Linux多进程混合项目的死锁问题
  8. Spring 系统学习:Spring的事务管理---事务回顾
  9. 1.零基础Java基础教程9天入门
  10. 渲染到纹理(Render To Texture, RTT)详解
  11. MySQL多表左右连接查询
  12. 数据结构与算法 | 用Java语言实现顺序表真的不难
  13. vue 根据权限显示不同页面解决方案
  14. 建兴固态硬盘垃圾/LITEON SSD SUCKS
  15. SAP 自动记账 零星记录
  16. AI 作画:Stable Diffusion 模型原理与实践
  17. 解决“该文件夹包含名称过长且无法放入回收站的项目”导致无法删除
  18. HTML5实现动态视频背景
  19. android动态请求权限
  20. 腾讯云点播 - 视频防盗加密 - 使用总结

热门文章

  1. 无线信道:传播与衰落
  2. 【更新】爬取姓名大全的名字
  3. [4827][Hnoi2017]礼物——FFT
  4. 华硕天选2安装win10专业版记录
  5. 流量监控:Net Meter v3.3 赢政天下汉化版
  6. ORCA msi修改工具 解决 msn 卡巴斯基 iTune等不能在Windows Server 2003下安装的问题
  7. chrome 中如何模拟网速变慢的情况?
  8. 怀旧服服务器荣誉系统是啥,怀旧服荣誉系统上线第一天:互刷出现 第一批R10指日可待?...
  9. Chrome学习笔记(二):UI组件,皮肤引擎
  10. 为什么上海有这么多安徽人