Bejeweled bot-проблема с распознаванием цвета
Всем Привет,
У меня возникли проблемы с моим ботом bejeweled, собирающим цвета с моего таймера, который подключен к picturebox, который позволяет мне выбрать прямоугольник на основе местоположения игр со следующим кодом;
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles tmrRecognizeColors.Tick Dim graph As Graphics screenshot = New System.Drawing.Bitmap(rect.Width, rect.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb) graph = Graphics.FromImage(screenshot) graph.CopyFromScreen(rect.X, rect.Y, 0, 0, rect.Size, CopyPixelOperation.SourceCopy) PictureBox1.Image = screenshot Dim x, y As Integer For x = 20 To 300 Step 40 For y = 30 To 310 Step 40 Dim c As Color = screenshot.GetPixel(x, y) If c.R > 250 And c.G < 5 And c.B < 30 Then 'color is red Grid((((x - 20) / 40) + 1), (((y - 30) / 40) + 1)) = Color.Red NumGrid((((x - 20) / 40) + 1), (((y - 30) / 40) + 1)) = 1
Тогда проблема, с которой я сталкиваюсь, заключается в том, что цвета предназначены для другой игры, и она не распознает чтение должным образом.
Фактический цвет для красного-Красный: 236, зеленый: 133, синий: 110, но я пробовал изменить его, и он все еще не работает, основываясь на использовании либо " & gt;, либо <", и я пробовал использовать, например;
If c.R = "236" And c.G = "133" And c.B = "110" Then 'color is red Grid((((x - 20) / 40) + 1), (((y - 30) / 40) + 1)) = Color.Red NumGrid((((x - 20) / 40) + 1), (((y - 30) / 40) + 1)) = 1
Но это не увенчалось успехом.
Есть идеи, как я могу преодолеть эту проблему?
Что я уже пробовал:
Изменение значений на основе цвета rgb в игре, которую я использую.
F-ES Sitecore
попробуйте удалить кавычки, c. R=236 и т. д. Если это не работает, то цветовые значения не такие, как вы думаете. Отладьте свой код, чтобы найти фактические значения.
caf20012
Например, вы имеете в виду: если c. R = 236 и c. G = 133 и c. B = 30, то
F-ES Sitecore
Да.
caf20012
Не работает. Никакие цвета не отображаются в Picolours, который является picturebox.
Ralf Meier
В вашей кодовой строке вы сравниваете значение со строкой-это не может быть успешным !!!
Это должно быть : "если (c. R = 236) и (c. G = 133) И (c. B = 110) Затем '
Вы уверены, что с ценностями ...?