안녕하세요. 개발자입니다.
이번 포스팅에서는 파이썬 코드를 작성해서 간단한 매크로 프로그램을 만들어보도록 하겠습니다.
Pycharm과 같은 IDE를 쓰시면 편하게 작업하실 수 있습니다. 저는 파이참을 잘 이용하고 있습니다.
*파이참은 아래 링크를 통해 다운받으실 수 있습니다. 안드로이드 스튜디오와 UI가 동일해서 작업하기 편합니다.
https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows
개발에 사용한 라이브러리들은 다음과 같습니다.
import pyautogui as pag
import mss
import numpy as np
import cv2
import time
개발에 사용한 안드로이드 게임은 다음과 같습니다. 참고로 광고 아니고 모르는 회사입니다. 그냥 컨셉이 너무 재밌어서 했습니다.
게임 매크로 개발의 순서를 소개하겠습니다.
<작업 순서>
1. 특정 구간을 실시간으로 확인해서 스크린샷을 딴다.
2. 해당 구간의 색상 평균을 판별해 흰색 접시가 왔는지 확인한다.
3. 접시가 왔다면 터치해서 고양이 초밥을 쌓는다.
->접시가 무너진다면 자신의 코드의 단점을 찾고 보완한다. = 성능 향상
스크린샷을 얻기 전에, 파이썬 코드들에 쓸 좌표들을 얻는 방법을 먼저 알아야 합니다.
마우스 좌표는 해상도마다 달라서 pyautogui의 position() 함수를 이용해서 구하시면 됩니다.
while True:
print(pag.position())
이렇게 작성해주시면 마우스의 실시간 좌표를 확인할 수 있으니, 본 코드 작성 전에 좌표를 얻어 기록해놓으시길 바랍니다.
계속해서, 스크린샷 따는 것을 코드로 확인하겠습니다.
while(frames >= 0 ) :
frames = frames -1
with mss.mss() as sct:
plate_img = np.array(sct.grab(plate_pos))[:,:,:3]
cv2.imshow('plate_img', plate_img)
cv2.waitKey(1)
time.sleep(0.03)
프로그램을 실행하면 반복적으로 스크린샷을 따는 것입니다. 이 스크린샷을 얻으면 get_color() 함수로 넣어서 해당 스크린샷에 흰색 접시가 왔는지 판별합니다.
다음으로, 흰색 접시를 판별하는 함수입니다. img를 매개변수로 받아서, 해당 이미지를 mean으로 평균값을 얻어낸 뒤 각각 210이 넘으면(흰 색에 가까우면) 접시가 왔다고 판단해서 터치를 하는 코드입니다. 생각보다 간단하고 짧은 코드입니다.
def get_color(img) :
mean = np.mean(img, axis=(0,1))
Rcolor = mean[0]
Gcolor = mean[1]
Bcolor = mean[2]
if Rcolor >= 210 and Gcolor >= 210 and Bcolor >=210:
pag.moveTo(1000,100)
pag.click()
이렇게 짧게 코드를 작성해서 스마트폰 게임 매크로 프로그램을 작성해보았습니다.
전체 코드는 다음과 같습니다.
import pyautogui as pag
import mss
import numpy as np
import cv2
import time
mouse_act = [462, 194]
plate_pos = { 'left' : 1002, 'top': 120,
'width' : 120, 'height' : 100}
frames = 100
def get_color(img) :
mean = np.mean(img, axis=(0,1))
Rcolor = mean[0]
Gcolor = mean[1]
Bcolor = mean[2]
if Rcolor >= 210 and Gcolor >= 210 and Bcolor >=210:
pag.moveTo(1000,100)
pag.click()
while(frames >= 0 ) :
frames = frames -1
with mss.mss() as sct:
plate_img = np.array(sct.grab(plate_pos))[:,:,:3]
cv2.imshow('plate_img', plate_img)
cv2.waitKey(1)
get_color(plate_img)
time.sleep(0.03)
작성 과정은 유튜브 영상을 확인하시면 자세히 볼 수 있습니다.
앞으로 프로그램 개발 관련한 영상을 많이 쓰도록 하겠습니다. 구독과 좋아요 부탁드리겠습니다.
긴 글 읽어주셔서 감사합니다.
*위 내용은 탈잉 강의를 통해서 자세히 보실 수 있으며, 강의를 구매하시면 자동화 프로그램 실행파일을 전자책을 받아보실 수 있습니다.
10년간의 노하우를 통해서 올바른 방법으로 프로그래밍을 공부하실 수 있도록 도와드리겠습니다. 개발자 올림.
'Python > 강의' 카테고리의 다른 글
파이썬으로 PC에서 모바일(블루스택, 녹스) 조작하기 -총정리- (0) | 2023.04.15 |
---|---|
pyinstaller 할 때마다 나오는 'import' 오류 없애는 법 (2) | 2021.04.30 |
파이썬으로 문자(SMS) 보내기 - Twilio 사용법 (0) | 2021.04.29 |
파이썬 실행파일 생성(pyinsatller) 시 여러가지 라이브러리 임포트 방법 (0) | 2020.06.19 |
댓글