Python/2.7 for fun.

시력 테스트 자동화 스크립트 2.

qkqhxla1 2016. 5. 7. 16:30

시력 테스트 자동화 스크립트 1 : http://qkqhxla1.tistory.com/359


이번엔 좀 다른거다. 생코에서 어떤분이 색약 관련해서 누가 더 색깔을 잘 구별하는지에 관한 게임을 만드셨다.

링크 : http://noda.me/game/eagleye

들어가면 게임이 있고 밝은 순서대로 누르면 된다. 근데 당연히 컴공학도로서 그냥 게임만 하면 재미없으니까 자동화시키는 코드를 만들어봤다.


영상. (무한으로 갈것같아 중간에서 중단시켰다.)


코드

# -*- encoding: cp949 -*-
import pyscreenshot as ImageGrab
import Image
import win32api, win32con
import time
import math

while True:
    time.sleep(2)  
    im = ImageGrab.grab(bbox=(880,290,1440,850)).save('cap.png') #그림이 있는 부분을 캡쳐해서 저장한다. 내 노트북 기준으로 절대좌표라 사람마다 다를수있음.
    im = Image.open('cap.png')
    o = im.getpixel((3,3))
    for i in range(im.size[0]):
        if im.getpixel((2,i)) != o:
            n = i
            break
    num = int(round(560/n))
    color = []
    for i in range(num):
        for j in range(num):
            color.append([sum(im.getpixel((j*n+30,i*n+30))),(i,j)])

    real_color = map(lambda x:x[1],sorted(color, key = lambda x:x[0], reverse=True))

    for i in real_color:
        win32api.SetCursorPos((890 + i[1]*(550/int(math.sqrt(len(real_color))))+20 ,\
            290 + i[0]*(550/int(math.sqrt(len(real_color))))+20)) 
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) #클릭 이벤트 발생.
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 
        time.sleep(0.2)