끄투 핵 개발 프로젝트

이 프로젝트는 끄투라는 온라인 끝말잇기 게임의 핵을 만드는 프로젝트이고, 게임을 시작하는 버튼만 누르면 만든 프로그램대로 한 단어로 시작하는 제일 긴 단어를 가져와 자동으로 출력하는 핵입니다.

사용한 모듈

module

끄투 핵 개발에서 자동으로 끄투온라인 페이지에 접속하기 위해 '셀레니움(selenium)' 이라는 라이브러리를 이용해 웹 크롤링을 하여 개발을 했고 셀레니움에서 webdriver이라는 API를 통해 개발을 했습니다.

크롤링이란?

크롤링은 인터넷에 있는 데이터정보들을 우리가 분석하기 쉽고 활용하기 쉽게 끔 데이터를 수집하는 행위라고 할 수 있습니다. 크롤링은 python으로 하기 쉬워서 이 프로젝트에서는 python으로 웹에 있는 데이터들을 크롤링했습니다. 크롤링을 해서 이 프로젝트에서 필요한 html태그 등을 찾아서 원하는 데이터를 추출하는 등 다양한 곳에 쓰였습니다. 셀레니움은 간단하게 크롤링을 도와주는 도구라고 할 수 있고 bs4(BeautifulSoup)라는 라이브러리도 크롤링을 위한 도구중 하나입니다. (셀레니움 : 웹 애플리케이션 테스트를 위한 라이브러리)

프로젝트 구조 & 실행순서

먼저 이 프로그램의 구조에 대해 알아보겠습니다. 끄투라는 게임은 2명 이상의 플레이어가 같이 끝말잇기를 하는 게임으로 자신의 순서가 있습니다. 그래서 프로그램에서는 자신의 순서가 되면 나오는 단어로 시작하는 제일 긴 단어를 찾아내어 출력합니다.

실행 순서는

  1. chrome webdriver 선언 후 끄투 온라인 페이지 열기

     

    selenium

    셀레니움의 웹드라이버로 끄투 페이지를 실행시킨 다음 단어데이터들을 가져옵니다.(단어는 따로 모은 것입니다.)

     

  2. 조건문으로 자신의 차례인지 아닌지 판단

     

    차례

    이때 del_list_()함수는 만약 라운드가 바뀐경우 전 라운드에서 사용하지 못하게 한 단어들을 다시 사용할 수 있도록 다시 단어목록에 추가시키는 역할을 합니다.

     

  3. now() 함수를 사용해 현재 단어를 얻기

     

    now함수

    HTML 소스에서 class이름이 jjo-display라는 곳에서 현재의 단어를 알려주고 있으므로 셀레니움을 이용해서 특정한 클래스에 포함되어 있는 단어를 추출할 수 있습니다.

     

  4. attack함수로 단어 입력하기

     

    attack함수

    attack() 함수에서는 현재 단어로 시작하는 제일 긴 단어를 가져와서 send() 함수로 보냅니다. get_word() 함수는 현재 단어로 시작하는 제일 긴 단어를 찾는 함수입니다.

     

send함수

그러면 send() 함수는 단어를 입력하는 공간의 값을 찾아와서 그 값에 찾아낸 제일 긴 단어를 넣는 동시에 click하는 것과 같은 동작을 하는 \n을 넣어주면 단어가 게임으로 보내집니다.

영상

더 궁금하신 점이나 질문은 조석준 / 010-7938-3153 으로 질문해주시거나 아래 주소를 참고해주세요. https://github.com/josukjun/kkutu/blob/master/kkutu.py

끄투에 대해 궁금하시거나 해보고 싶으신 분들은 아래 주소를 참고해주세요 https://kkutu.co.kr/