파이썬 프로젝트) 끄투 매크로 개발 일지 ~7/1(중간 완성)

2017. 7. 2. 15:33프로젝트(완료)/끄투 매크로

이전의 글에서 보았던 문제점들을 해결하였다.



문제점 1) 두음법칙

 

ex) 력->역 , 락->낙 등등 

두음법칙을 사용하지 않으면 단어가 없어 진행할 수 없는 상황이 온다.



해결책)


두음법칙에 해당되는 글자를 두음법칙 된 글자로 치환



코드)





문제없이 잘 해결되었다. 사기 끄투 봇과 대결을 펼치며

거의 모든 두음법칙에 해당되는 것들을 치환시켜버렸다. 인간 딥러닝



문제점 2) 중복 처리


같은 앞글자가 오게 되면 똑같은 단어를 입력하게 된다.

이것은 기존 많이 배포되고 있는 끄투 매크로,핵에서도 발견되는 문제점



해결책)


사용한 단어들은 단어를 저장한 리스트의 맨 뒤로 보냄.


위 중복처리를 쉽고 빠르게 해결하기 위해 사용 언어를 파이썬을 채택한 것이기도 하다.

자바와 같은 경우는(필자가 자바를 많이 사용해보지 못해서 메소드를 모르는 것일수도 있지만...)


사용한 글자 없앰 -> 리스트 분해 -> 리스트 재조합 -> 사용한 글자 맨 뒤에 넣기


위 과정이 무지막지한 반복문으로 이루어져 2000단어 넘게 있는 리스트를 저렇게 한다고 상상하니 상당히 끔찍했다.


하지만 파이썬은 단 3줄로 해결이 되었다.


코드)


temp = a[0]

del a[0]

a.append(temp)


또한 개발 과정에서 db를 3개로 나누어

매너에서 점수를 따는 모드,

매너에서 상대를 죽이는 모드,

비매너에서 상대를 죽이는 모드를 만들었다.


이외의 추가점은 아래와 같다.


1) 반복문의 지연시간 제거


더 빠른 입력을 위함



2) 게임 끝!과 게임을 나갈 때 뜨는 자바스크립트 경고창 예외처리


파이썬은 자바스크립트 경고창을 오류로 받아들여 파이썬 실행창을 없애버렸다.

위와같은 이유로 로비에서 초대가 오면 실행창이 꺼지고 중간에 나가면 실행창이 꺼졌다.


위를 try except를 활용한 재귀함수로 자바스크립트 경고창이 뜨면 프로젝트가 처음부터 다시 시작이 되게 변경하였다.


또한 게임 끝!이 나타날 경우는 강제로 오류를 내게 하여 프로젝트가 처음부터 다시 시작이 되게 하였다.


▽아래 영상은 필자가 만든 매크로/핵과 사기 끄투 봇이랑 끝말잇기를 하게 한 영상이다.





필자는 사기 끄투 봇이랑 비등비등 한 프로젝트 결과물에 심히 만족을 하여

여기서 중간 완성을 선언한다.



ps.핵을 활용하여 지인들과 대결해본 결과, 여러가지 한계점을 찾을 수 있었다


1) 껏, 슭등 으로 시작하는 단어는 1~2개밖에 없지만 저 단어들로 끝나는 단어가 많은 경우


솔직히 끄투에서 활용되는 핵 잡는 1순위 방법이다.

끝말잇기의 규칙상의 문제이므로 해결 불가. 한계점으로 판단된다.



2) 사기 끄투 봇처럼 시간초 안 바로바로 입력이 안됨.


위 영상을 보면 알 수 있듯이, 지연시간이 있다. 이것은 2000개 이상의 단어를 휘젓고 찾고 입력하는데 걸리는 지연시간이다. C언어와 어셈블리어로 만들어 코드량을 줄이면 잘 될지도 모르겟지만 사용 언어 자체의 한계와, 사기 끄투 봇은 웹사이트 자체에서 움직이는 것이기 때문에 환경적인 한계점이 있다.



3) 계속 업데이트되는 끄투 서버 db에 맞춰 따라갈 수 없음.


끄투 프리서버는 상당히 업데이트가 빈번하여 알게모르게 죽이는 단어가 추가되기도, 가장 긴 단어가 갱신되기도 한다. 이러한 변경점을 프로그램 스스로는 인식하여 개선할 수 없고 직접 코딩해줘야한다. 사실 이부분은 딥러닝의 기초 부분을 이용하면 가능은 할지 모르지만 중간 완성을 선언한 시점에서 이 부분은 무기한 연기이다.