C#Bejeweled 3 Bot —第1部分—瓷砖识别
如前所述,这是我在C#Bejeweled 3 Bot中进行屏幕抓取和图块识别的方式(出于明显的原因,我将只插入相关的代码段,有关完整的源代码,您将必须看到我即将提供的repo)。 一切始于覆盖 如您在上一篇文章中发布的视频中所见,我通过在游戏区域上移动一个蓝色覆盖层(覆盖层实际上是一个表单)来启动机器人。 正如您可能在视频中看到的那样,表单是可拖动的,我使用它的position,width和height属性进行屏幕抓取。 在表单下获取图像非常简单: 现在考虑一下,我可能应该找到一个像素,该像素对于所有宝石都具有唯一的颜色,但是那样子会更有趣! (并且我将需要其他邪恶项目的平均颜色函数)。 此外,所有宝石的中心像素几乎都是白色的,所以我不建议您使用它! TileColors [,]是一个二维数组,其中包含板上所有宝石的颜色。 SimplifyColor方法遍历所有TileColors [,]元素,并确保我们对相似的图块使用相同的颜色(毕竟RGB(126,58,32)与RGB(123,58,31)不同)。 屏幕刮除基本上就是全部。 在下一篇文章中,我将解释如何确定可能的移动以及在算法中应该改进的地方。