EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

如何让硬编码变成可编辑脚本?反射?

参考资料:

[1] C#实现将字符串转换成代码并执行
 

可编辑脚本(样例):

定位(狗,狼,妈,深月,暴击弓);
075,狗;
070,狼;
053,妈;
052,暴击弓;
047,狗;
046,深月;
036,狼;
029,狗;
021,妈;
018,暴击弓;
011,狼;
003,深月;
001,狗;

替换硬编码:

if (rz == "1:05")
{
    //伊莉雅
    ClickCharacter(2);
}
if (rz=="1:03")
{
    //珠希
    ClickCharacter(1);
}
if (rz == "0:45")
{
    //镜华
    ClickCharacter(5);
}
if (rz == "0:44")
{
    //伊莉雅
    ClickCharacter(2);
}
if (rz == "0:43")
{                      
    //凯露
    ClickCharacter(4);
}
if (rz == "0:38")
{
    //茜里
    ClickCharacter(3);
    Thread.Sleep(1);
    //珠希
    ClickCharacter(1);
}
if (rz == "0:23")
{
    //伊莉雅
    ClickCharacter(2);
}
if (rz == "0:14")
{
    //珠希
    ClickCharacter(1);
}
if (rz == "0:10")
{
    //镜华
    ClickCharacter(5);
}
if (rz == "0:08")
{
    //茜里
    ClickCharacter(3);
}
if (rz == "0:07")
{
    //凯露
    ClickCharacter(4);
}
if (rz == "0:05")
{
    //伊莉雅
    ClickCharacter(2);
}

分析需求:

  • 需要得到时间
  • 需要得到点击的对象

那么,有一个最简单的思路,不需要反射:

  1. 用While语句直接将字符串一度到底,得到所有的时间和点击对象
  2. 返回读取成功Msg
  3. 点击执行

补充:

在读取的过程进行基本逻辑检测。

基本逻辑检测,主要是括号里面的5个参数与之后的参数的一致性,以及符号的使用(必须成对使用)。

思路详细:

对于第一句的处理和对接下来的句子的处理是不一样的;

单单是靠逗号分隔是最简单的,然而可读性不佳,因此采用分块处理的方式。

第一个中文分号前面的内容,进行处理,过滤掉“定位”,直接读取中文圆括号里面的内容。(但是“定位”本身是必须的)

然后给除了第一句以外的内容,新建一个类用于存储List;

接着,写一个基本数字转换时间的方法,给后面调用;

然后差不多就行了。

本次脚本都不能算是脚本,因为不是复杂逻辑,根本用不着反射。(果然,用反射还是我想多了)

This article was last edited at 2020-08-05 16:47:06

* *