仅检测和处理独特的图像

时间:2019-03-17 02:58:16

标签: c# data-structures duplicates

我遇到的问题是,我的图像出现在同一本书的两页上。

我希望我的程序仅在遇到新图像时才做出反应(触发副作用),而忽略重复图像。一旦完成,我希望将其重置,以便重复该过程。

namespace testpad
{
    class Interaction: Scene
    {
        public override string Name => "Interaction";

        public static RectMap imageone = new RectMap()
        {
            X = 239,
            Y = 199,
            Width = 125,
            Height = 18
        };
        public static RectMap imagetwo = new RectMap()
        {
            X = 217,
            Y = 317,
            Width = 428,
            Height = 12

        public override bool Match(ScriptBase script)
        {
            return script.Match(imageone, 90),
                      || script.Match(imagetwo, 90);

        }
        public override void OnMatched(ScriptBase script)
        {
            if (script.Match(imageone, 90))
            {
                script.PressKey() { A = true });
                Thread.Sleep(100);
            }
            else if (script.Match(imagetwo, 90))
            {
                script.Press() { B = true });
                Thread.Sleep(1000);
            }
    }

}

1 个答案:

答案 0 :(得分:0)

如果您希望收集对象,并且希望根据对象的出现频率进行操作,则最好的解决方案是Dictionary<[Key],int>,其中Key是标识符(在您的情况下为{{ 1}}(带有图片的名称),该值代表按键的频率。每当遇到给定String的对象(在您的情况下,将其称为image),您就可以增加值存储在该键上。之后,您可以根据产生的频率做出决定。

但是,在您遇到的情况下,您只需要在第一次遇到新图像时只对Key做出反应,那么once将是您的最佳选择。

所以您的代码如下:

HashSet<String>