Project/Fruit Box
-
3. 강화 학습으로 사과를 지워보자Project/Fruit Box 2023. 3. 27. 00:35
강화학습과 함께라면 높은 점수가 가능하지 않을까? 이미지를 저장하기엔 용량이 부족할 것으로 예상되어 txt로 배열을 처리해서 저장하고자 하였다 pyautogui를 이용하여, 판을 읽어서 txt에 저장 새로 고침 후 저장을 반복하였다 그 게임판에서 나오는 최대 점수를 알아내기는 어렵고 또한 방법이 항상 하나만 있기는 어렵다고 생각하여 지운 사과 개수 최대화로 무지성 강화학습을 돌려보았다 이때 DQN알고리즘을 가져와서 사용하였다 현재의 게임판을 state Q로 하고, 점수를 높이기를 목표로 학습을 돌렸다 이건 검색하면 그냥 나오기에 코드는 패스하겠다 결론만 알아보자 생각보다 점수 상승이 크지 않다 정확히 말하면, 평균 점수는 높은 것 같다는 생각이 들었다 학습된 판들을 바탕으로 돌린 결과, 무지성 삭제보단 ..
-
2. 전략적으로 사과를 지워보자Project/Fruit Box 2023. 3. 27. 00:28
임시 저장한 글을 등록하는 걸 잊어 한번에 풀어버리자 전략을 찾기 위해 열심히 게임을 해봤다 게임을 해보다 보니 더 나은 전략이 생각났다 해당 패턴은 직접 찾기 어려우니 아래 표에 있는 예시로 살펴보자 9 1 3 3 9 1 위와 같이 사과가 있다고 생각해 보자 딱 보니 (1, 9) 쌍을 지우는 모습이 보인다 그런데 그냥 무지성으로 지우면 안 된다 9 1 3 3 9 1 위와 같은 경우를 지운 경우를 생각해 보자 주변에 사과에 따라 다르겠지만, 왼쪽 위와 오른쪽 아래 쌍 제거가 불가능하다 아래와 같이 제거하는 경우가 유리하다 9 1 3 3 9 1 위와 같이 지운다면 가능한 모든 사과를 지울 수 있다 몇몇 패턴을 더 찾았는데, 한 가지만 더 소개해주면 아래와 같은 T자 형이 있다 9 1 1 3 9 3 9 1 ..
-
1. 그리디하게 사과를 지워보자Project/Fruit Box 2022. 12. 6. 23:28
코드를 이쁘게 정리하느라 시간이 좀 걸렸다 라이브러리는 pyautogui 하나만 사용하였다 import pyautogui as pg 이전 글에서 자바 스크립트 분석을 시도했으나 쉽지 않았다 아니 가능한지는 지금도 모르겠다 그렇기에 이미지 인식으로 방향을 돌렸다 이미지 인식에는 openCV를 사용해야 하나 고민하였지만 문제의 크기를 축소시켜 문제 해결을 하려 했다 바로 게임 창의 크기를 고정시킨다 그러면 단순이 이미지의 위치를 찾는 것으로 창을 읽을 수 있다 해당 코드는 아래와 같다 def init_board(): location_dict = {} im = pg.screenshot() for i in range(1, 10): locations = pg.locateAll(f"{i}.png", im) for ..
-
0. 재밌는 사과 게임Project/Fruit Box 2022. 11. 30. 00:26
해보고 싶은 프로젝트가 생겼다 문제는 내가 지금 알고 있는 건 없고, 어떻게 하는지 모르겠다 그러니 일지를 기록해 두자 아 그리고 이 프로젝트는 비정기적으로 심심하면 작성할 예정이니 많관부~ 0. 사건의 발단 어느 날 수업 시간에 온 카톡 요새 인싸 친구들이 한다는 화제의 게임이라고 한다 https://www.gamesaien.com/game/fruit_box_a/ 10을 만드는 사과 조합을 찾아 터트리는 게임이다 되게 단순하면서 중독성 있다 계속해도 점수는 잘 오르지 않고 화가 난다 게다가 눈이 아프다 게임을 하면서 (9, 1)이나 (8, 2) 같은 조합을 빠르게 치우면 점수가 잘 나오는 경향이 있다는 걸 경험적으로 알았다 그런데 난 이번 학기에 "기초 인공지능" 수업을 듣는데, 여기서 배운 상황과 유..