Найти - Пользователи
Полная версия: Помогите разобраться с функцией
Начало » Python для новичков » Помогите разобраться с функцией
1 2
Kadony
Я хочу написать себе для игры программу
Мне нужно чтобы эта функция постоянно проверяла значения пикселя по указанным координатам
Обьясните мне че ваще мне делать, я купил книжку майкла доусона python для абсолютных нубов
Но прочитав 7 глав, усвоил только простые вещи
def get_pixel_colour(i_x, i_y):
import PIL.ImageGrab
return PIL.ImageGrab.grab().load()

print get_pixel_colour(0, 0)


Когда вывожу через принт значение пишет invalid синтаксис ВЕРСИЯ питона самая последняя
Romissevd
код ошибки весь выкладывай и код обарачивай в теги рядом со смайликом - выбираешь python
Kadony
Слушай, вот я починил как мне теперь указать координаты для того чтобы с определённой точки получать цвет пикселя
doza_and
Надо переставать быть нубом. При программировании надо понимать значение буквально каждой точки, каждого пробела. Не бояться исследовать если непонятно что это. Пользуйтесь функцией help.
Разберитесь что означают нули в вашем коде.
 get_pixel_colour(0, 0)
Если не хотите разбираться или неинтересно есть другой путь. Платите деньги тем кто понимает. Но при этом вы все равно должны понимать основы чтобы грамотно ставить задачу и чтобы вас не надули.
ivin
Kadony
print get_pixel_colour(0, 0)
правильно будет так:
print (get_pixel_colour(0, 0))
Kadony
doza_and
Надо переставать быть нубом. При программировании надо понимать значение буквально каждой точки, каждого пробела. Не бояться исследовать если непонятно что это. Пользуйтесь функцией help.Разберитесь что означают нули в вашем коде.
Ну так я и пытаюсь понять , поэтому и задаю вопросы
PEHDOM
Kadony
вот я починил как мне теперь указать координаты для того чтобы с определённой точки получать цвет пикселя
ну так умные дяди для этого придумали документацию, вот отсюды https://pillow.readthedocs.io/en/stable/_modules/PIL/Image.html#Image.load можно узнать что PIL.ImageGrab.grab().load() возвращает PixelAccess Class. Смотрим https://pillow.readthedocs.io/en/stable/reference/PixelAccess.html#pixelaccess что у нас может PIL.PyAccess и видим простенький пример:
 from PIL import Image
im = Image.open('hopper.jpg')
px = im.load()
print (px[4,4])
PROFIT!!!
Kadony
 MouseGetPos, 922, 240
	PixelGetColor, color, 922, 240, alt
	Var40 = %color%
	if ( var40 = 0xFFFFFF  )
	{	
		Random, rand10, 200, 600
		sleep 500+rand10
		MouseGetPos, 1260, 260
		PixelGetColor, color, 1260, 260, alt
		Var10 = %color%
		if ( var10 = 0x2A68FC  ) | ( var10 = 0x1C5FFC  ) | ( var10 = 0x1C60FC  ) | ( var10 = 0x1C61FC  )
		{
			SoundBeep, 750, 500
			SendInput, {Numpad3}
			BlockInput, Default
		}
		else
		{
			Click Left 240,240, 
			 Random, rand20, 50, 100
			 sleep, 200+rand20
			Click Left 240, 350,
			BlockInput, Default
			sleep 5000
			Label30:
			MouseGetPos, 733, 620
			PixelGetColor, color, 733, 620, alt
			Var20 = %color%
			if ( var20 = 0x0000FF  )
			{
				Random, rand3, 5, 10
				Send {Click}
				sleep 70+rand3
				Send {Click}
				sleep 70+rand3
				Send {Click}
				sleep 70+rand3
				Send {Click}
				sleep 40+rand3
				Goto, Label30	
			} 
			else
			{         
				MouseGetPos, 560, 709
				PixelGetColor, color, 560, 709, alt
				Var30 = %color%
				if ( var30 = 0x00FF4E  )
				{
					Goto, Label10
				}
				else
				{
					Goto, Label30		
				}
			}	
		}
	}
Я хочу свой код на AHK который выше , переписать на питоне . У меня остался вопрос только как мне в if записать вот эту проверку цвета
Kadony
PEHDOM
Мне нужно без скриншота , мне нужна макс.скорость для сравнения как в ahk
PEHDOM
Kadony
Мне нужно без скриншота , мне нужна макс.скорость для сравнения как в ahk
я прям в ступоре, так как без скриншота и макс.скорость в некоторых случаях вещи несовместимые.
если вам нужно только один пиксел, по заранне известным кординатам то вам нужна функция GetPixel из Win32 API https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-getpixel .
В пайтоне есть специальная обертка над WinAPI - pywin32. http://timgolden.me.uk/pywin32-docs/win32gui__GetPixel_meth.html
Другое дело если вам нужно искать какое-то сочетание пикселов тогда таки приходиться делать скриншот потому как винапишный GetPixel на семерке и выше с включенной композицией рабочего стола работают раз эдак в 100 медленнее чем с выключеной композицией.
вроде эту проблему можно решить заменив GetPixel на GetDIBits , но только послухам, я лично не пользовал, потому не могу сказать что да как.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB