闲来无视写的关于炉石的测试小程序

最近半年都在忙项目,基本无时间研究技术了,而且不断发现,项目中遇到的问题大多都是业务层面的,技术很多时候不是瓶颈,所以很少研究技术了。

这个是一个测试炉石传说中25仔的轰炸效果界面,我设计的情景是对面的脸还有2血,自己也是2血,对面一个3/2精灵龙,一个0/1的鲜血小鬼;此时派上25仔随机3点伤害,测试人品如何。。。

核心思路:ui(winform)端,向helper类传入定义好的类,BoomRequest,其中包含了一个字典,key代表每个元素(自己的脸,对手的脸,场上的生物等),value是int类型,代表当前各个元素的血量。helper根据当前还存活的生物数量来随机一个索引,然后把对应索引的生物血量减少,返回计算好的response,最后ui端进行展示;

这里的总体概况就是,每次轰炸实际上是单独计算的,也就是说,每随机一次,炸一次;炉石中25仔的技能是随机3点,因此ui端就是调用三次helper中的相关方法;

public static BoomResponse Boom(BoomRequest request)
        {
            Random random = new Random(System.DateTime.Now.Millisecond);
            StringBuilder sb = new StringBuilder();
            int boomIndex = 0;
            string boomObject = string.Empty;
            BoomResponse response = new BoomResponse();
            Dictionary<int, string> dic = new Dictionary<int, string>();
            int i = 1;
            foreach (KeyValuePair<string, int> key in request.RequsetData)
            {
                if (key.Value > 0)
                {
                    dic.Add(i, key.Key);

                    i++;
                }
            }
            boomIndex = random.Next(1, dic.Count+1);
            boomObject = dic[boomIndex];
            request.RequsetData[boomObject] = request.RequsetData[boomObject] - 1;
            sb.Append(string.Format("{0} 的炸弹击中了 {1},造成了一点伤害", "25仔", boomObject));

            response.BattleLog = sb;
            response.ResponseData = request.RequsetData;
            return response;
        }

  我最后在前端循环了大量数据进行测试,结果和之前预想的差不多:

情况1:把对面生物都炸死的情况非常少,1w次中只有大概不到60次左右;

情况2:把对手打死,2000次左右

情况3:自己炸死,2000次左右

情况4:分别打中了对手生物且都没打死的可能也不大,只出现了不到300次左右,但是比情况1要多

情况5:剩余情况,出现的最多,5000多次,自己和对手都没死,且生物没死光(可能存活其中一个)

不知道暴雪是怎么算的呢?

闲来无视写的关于炉石的测试小程序

时间: 2024-10-08 00:23:28

闲来无视写的关于炉石的测试小程序的相关文章

一个Java写的批量重命名文件小程序

今天学了一下java的File操作,然后乘着兴趣,写了一个可以批量处理文件命名的小程序,小程序还有一些不完美的地方,但胜在有趣.比如可以快捷更改你不想让别人看到的文件之类的...限个人使用,造成数据丢失后果自负哟. import java.io.File; import java.sql.Date; import java.util.Scanner; public class RenameTool { boolean useDefaultName = false; boolean useDefa

聊聊程序员如何学习英语单词:写了一个记单词的小程序

背景: 关于英文对程序员的重要性,就不多说了! 英语的学习,有很多,今天也不聊多,只聊英语单词! 关于单词的记忆,找过很多方法,下载过很多软件. 如图(其它不好用的都卸载了): 上图算是我以前用过软件,注意,是以前哦~~~ 意思就是没有坚持下来~~~~ 随时间的推移,最后它们还是被我遗忘了~~~ 为什么???不能:坚持!坚持!坚持! 学习思考: 一直在找方法: 1:下载过联想记忆法.背文章记单词,词根,各种视频~~~ 2:连单词的数据库都网上下载了一份了,期望从数据库的直接记忆单词快些~~~ 通

基于MNIST手写数字数据集的数字识别小程序

30行代码奉上!(MNIST手写数字的识别,识别率大约在91%,简单尝试的一个程序,小玩具而已) 1 import tensorflow.examples.tutorials.mnist.input_data as input_data 2 import tensorflow as tf 3 mnist = input_data.read_data_sets('/temp/', one_hot=True) 4 5 #设置 6 x = tf.placeholder(tf.float32,[None

python写的的简单的爬虫小程序

import re import urllib def getHtml(url): page=urllib.urlopen(url) html=page.read() return html def getpic(html): s=r'src="(.*?\.jpg)" pic_ext' piclist=re.findall(s,html) x=0 for imgurl in piclist: urllib.urlretrieve(imgurl,'%d.jpg'%x) x=x+1 htm

用Go写了一个类似Proxy的小程序,可以用来访问goolge个人使用还是可以的.

package main import ( "fmt" "io" "net/http" ) func main() { http.HandleFunc("/", route) e := http.ListenAndServe(":80", nil) if e != nil { fmt.Println(e) } } func route(w http.ResponseWriter, r *http.Reque

coffeescript写的一个无限下拉小程序

locate=$(document).height()-$(window).height() times=0 scroller = (cb)-> if locate<=$(document).height()-$(window).height() times=0 locate+=100 scroll(0,locate) clearTimeout(timer) timer=setTimeout("scroller()",54) timer else await sleep 3

最近相对闲点,写个笔记2

生活 最近老婆带着孩子回老家了,我这心里也就空落落了许多,才想起,自己的乐趣与婚前怎么大相径庭.婚前想着到处看看,体验丰富而新奇的旅程,婚后觉得更贴近现实生活,乐趣本身 也源自生活本身了. 乐趣 毕业季已过,想起好几年前自己找工作时,挺辛酸,但梦想却很丰富.大多数人都会想找一个自己喜欢的行业,做自己喜欢的事情.真能这么纯粹当然是好事,但往往事与愿违. 个人看淡了,觉得工作可以是自己生活乐趣的一部分,但不能强相关自己兴趣.不要把工作搞的那么神圣,要对工作的期望放低些,对自己的生活要求放高点,完全可

最近相对闲点,写个笔记

瓶颈 最近总在想自己往后的路怎么走,还谈上规划,因为自己是研发,做开发也做管理,都谈不上非常深入,虽然在努力积累,但走出当前公司的话, 面对大企业感觉又缺少系统的认知,很多技术和问题的解决大都是自己的经验积累及百度,没有更专业的专家讨论,感觉闭门造车,心有点虚.面对小 企业感觉又深入不够,因为公司采用大平台产品,轮子在经过N次的交付之后,都比较稳定,所以对业界通用的技术细节深入的不够.个人觉得当前公司 平台已经是自己瓶颈,所以在努力寻找新的机会. 机会点 在自己寻找机会过程中,更深的体会到,研发

写个简单的螺旋打印矩阵程序-C

#include<stdio.h> #define PRINT(x) printf("%03d ",(x)) void spiral_matrix_print(const int matrix[][4],int rows,int columns) { int top,left,i; int bottom = rows-1; int right = columns-1; top = left = i =0; while(bottom>=top && ri