caf20012 Ответов: 0

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) Затем '
Вы уверены, что с ценностями ...?

0 Ответов