U E D R , A S I H C RSS

조현태/놀이/지뢰파인더

제작동기

위키에서 마인 파인더를 본 기억이 어렴풋이 남아있다.(SeeAlso MineFinder)
그런데 작동 시간이 길고 성공률이 낮았던 기억이..(맞는지는 모르겠다.)
그래서 만들게 되었다. 방학중의 시간도 죽일겸..

제작과정

일단 눈, 머리, 손으로 나눠서 제작한다.
눈은 전체화면에서 지뢰찾기 프로그램의 이미지를 추출하는 방식을 생각했으나 그냥 핸들을 구해오는 편한 방법으로 바꿔서 만들었다.
손은 마우스를 직접 이동시켜 클릭하는 방법과 메시지를 전달하는 방법중 후자가 더 간지나 보여서 그쪽을 택했다.
머리는 여러가지 알고리즘을 바탕으로 구상중이다.

제작과정의 잡담

minefinder_dine.jpg
음.. 위에 두 메시지가 직접 클릭했을때고, 밑의 4개가 '손'이 보낸 메시진데..
왜 4개나 되는거지..;;;;
뭐 잘 작동하니..~.~ 뭐 어떻게든 되겠지... 공부를 해야하는데 공부도 안하고 남이 만든거 분석도 안하고
혼자서 마구 만드니 뭔가 잘못되가고 있는 느낌이..;;

데블스 캠프에서 배운 로보코드를 활용할 생각.. 뭔가 객체같은 느낌이 들어서 클래스로 만들어 주기로 했다.
그런데 클래스란거 배우지도 않고 막 써도 되는건가..ㅠ.ㅜ 나쁜습관이 들지도..^^;;
클래스명이 로보 만들어놓은 객체의 이름을 레인져로 지어주었다.^^;;;
뭔가 비정상적인 프로그래머..ㅎㅎㅎㅎ 이상한 녀석!!^^;; - 조현태

갈수록 일에 치여 시간이 줄어든다.^^ 오늘은 클래스를 2개나 동원해서 레인져가 자료를 저장할 곳을 조금 만들었다.
한 클래스에서 다른 클래스를 붕어빵 찍듯이 찍어내고, 또 그 클래스가 여러개로 찍혀나가게 했는데..
이거 메모리 낭비 아냐? ㅎㅎ
거기다 알고리즘이 생각보다 복잡해서 머리를 썩히고 있다. 끄응...역시 자료구조를 정하는게 가장 중요한 일인겨..;;
내일 레인져의 머리를 완성하고, 모레 레인져의 머리가 돌아가도록 짜주면 완성될 듯 하기도 하다.
문제는 디버깅이 며칠간 이루어지는가.. 왠지 겁이난다. 와따 많은 논리적 오류와 싸워야 할듯..;;

만들고, 고치고, 지우고... 거의 없는시간에 만들려니 힘들다.^^
거기다 알고리즘이 정확하지 않아서 여러번 수정하다보니.... 에휴..ㅎㅎ
내일 테스트 할 수 있으려나..^^

  • 어제 피곤해서 일지 적는걸 잊어서 오늘 적고 일하러 감..^^

    자면서 작성했더니, 소스가 이상해졌다. 본인도 뭐가 뭔질 모를뿐더러, (사실 자면서 짜서 지금 어디 짜는지도 모르고 작성했다.)
    디버깅 작업이 난관에 부딫혔다. 끄응.. 수정해나가면서 일단 완성하고 봐야겠다. 만들고나면 전체적으로 대대적인 수정작업을
    단행해야지...OTL...

    킁..ㅠ.ㅜ 재앙이다..;;ㅁ;; 앞으로는 이렇게 짜지 말자는거 이외에는 뭐라 할말이 없다. 오랫동안 손대지 않았던 터라, 알고리즘이 잘 생각이 나질 않는다. 그래도 내가 짜서 그런지 금방 알고리즘을 생각해내는데는 성공했지만... 많은 부분을 수정했으나, 더 많은 재앙들이 초롱초롱한 눈빛으로 나를 반기고 있다. 이쁜 아가씨면 반겨주겠지만 이런 버그덩어리라니.. 도데체 어느 부분에서 잘못된 메모리를 엑세스 하는건지..흑흑 어빠햐가 잘못해떵..ㅠ.ㅜ 제발 정상적으로 작동해줘..ㅠ.ㅜ API의 특징인지...내가 못해서인지.. 테스트가 콘솔창보다 용의하지가 않다. 수없이 조각조각 나있는 할당된 메모리의 파편을 일일이 추적하자니.. 트리나 링크드리스트 형식의 문제점이라고나 할까..;;ㅁ;; 도데체 어디서 잘못된겨~!!! !@#$%^&*()...... 그래도 실행하면 지뢰 한 2-3개.. 숫자 한 2-3개는 찾고 뻗으니위안은 된다.(참고로 아직 지뢰를 건드린적은 없다!!) 수정해야할 부분 태산.. 만들어야 할 부분 태산.. 휴가가 극도로 짦은걸 보면 방학중에도 만들어야 할지도... 뭐 나름대로 앞으로 프로그램을 어떻게 짜야 할 지에대해서 조금은 도움이 되겠지뭐..ㅠ.ㅜ 흑.. - 조현태

그분이 오셨어요 ~_~ 하얗게...하얗게.. 태워버렸어...
계획 전면 수정. 알고리즘 및 소스 재작성 돌입. 과거 단순 "로봇을 이용해서 마호로매틱 쵸비츠..는 아니고 어쨋든 멋지게 만들어 보자!" 에서 "로봇만 이용하는건 넘흐 어려벙~ 다른걸 섞어봐야겠어~!" 로 변경. 사용하기가 편하고 검색속도가 빠른 기존의 방법과 정확도가 높은 로봇을 밀가루와 팥이만나 붕어빵이 되듯.. 잘 섞어보기로 결정했다. 새로 모든소스를 작성하고 기존 소스의 심각한 문제점이었던, 어설픈 분할과 최악의 테스트 조건(윈도우 지뢰찾기는 실행해서 어떤 맵이 나올지 모른다. 또한 테스트 시간이 길고 준비가 필요하다)을 극복하기 위해서 수정을 가했다. 좀더 체계화된 분할로 좀더 보기편하고 소스에 간지가 흐르도록 하였으며, 테스트 주도개발의 내용에서 눈꼽의 반만큼을 이용, 편리한 테스트 환경을 만들었다. (나름대로 진보환 환경과 소스!) 가슴은 아팠지만 재앙보다야 나을거라고 생각한다. 그리고 로봇..그 부분은 아직 경험이 없어서(데블스 캠프에 만들어 본게 다..)그런지 조금 빡세다. 뭐 그래도 한번 실패도 했으니, 더 쉽게 만들어 질 것이라고 생각하고 만들기로 결정했다. - 2005.08.13

드디어 로봇 완성. 저번보다 더 간지나는( 구조화가 잘된) 알고리즘 표현과, 훨씬 편한 테스트 환경으로 저번에 비하면(어디까지나 비해서다. 아직 어려운 점이 많아 고생을 많이 했으며, 새로운 자료구조가 본인이 만든 탓인지 뭔가 복잡하다.ㅎ) 순풍에 돛을 단듯 아주 순조롭게 진행되었다. 그래서 로봇을 완성. 손과 눈을 api로 바꿔주고 지뢰찾기를 향에 발싸~!... 실패... 만능은 아니라서 시작한 지점에 2가 떡하니 나와준다면.. 얘도 찍어야 한다. (물런 찍어야 하는 상황에서 사람보다야 높은 적중률을 보이도록 설계했으나.. 이런 최악의 상황은 사람이나 프로그램이나.. 오히려 사람이 낮다.) 두번째.. 오옷..1초만에 성공... 세계신기록이야~ ~_~ 후후후.. 아~ 이날아갈듯한 기분..ㅎ (혼자 행복에 겨워서 뒹굴었다.ㅎ) 세번째.. 알수없는 오류가 깊은산속 옹달샘에서 발생.......OTL.ㅎ 그래도 어쩄꺼나!!! 성공시켰다. 후후후.. 이제 남은 디버그따위..ㅎ 사뿐히 해결해주짓..(역시 테스트 환경이 좋으니 작업이 잘 진행된다. 꼭 염두해두자.ㅎ) 어쨋든 오류가 떠도 지금은 행복하다.ㅎ ~_~ 일해야 되서 지금은 못해도.. 시간나는데로 해서 완성시켜주마~ >ㅁ<;;; - 2005.08.14
고급... 생각외로 풀기 어려웠잖아~'ㅇ')////

제작일지

날짜 내용
2005.07.09 눈과 손을 제작하였다.
2005.07.10 머리역활을 하는 레인져(이름을 레인져라고 붙였다!!^^)에게 다리를 달아주었다.
2005.07.11 레인져의 머리(가상의 자료를 저장할 곳)를 80%작성.
2005.07.12 레인져의 머리를 95%작성. 머리의 생각알고리즘을 25%작성..
2005.07.13 레인져의 머리를 99%작성. 머리의 생각알고리즘을 85%작성.. 이전에 졸면서 했던 작업 디버깅 5%..
2005.08.01 정말 바뻐서 한동안 손을 안댔더니, 내용이 잘 생각이 안난다는.. 디버깅 15%
2005.08.12 소스 백지화 후 로봇을 제외한 부분(메인, 테스트 환경, 손, 눈, 기본 탐색 알고리즘, 새로운 자료구조)완성
2005.08.13 로봇 완성. 디버깅 작업 시작!!
2005.08.14 디버깅작업 아마도 끝..ㅎ - 초급 1초 중급 1초 고급 1초..처음 눌렀을때 3*3정도의 크기만 나오면 거의 찾아내는듯.
2005.08.15 나름대로 노브레인(응?)한 1.0버전 완성.ㅎ

제작품(?)


지뢰파인더 1.0v - Upload:MineFinder.exe
실행할 때에는 반드시 지뢰찾기가 다른 창에 가리지 않아야 한다!! - (괜히 메모리 오류를 만들지 말자.^^*)
아직 예외상황에 대한 대비가 부족하며..(무엇보다도 뽀대가 안난다!! 아직 배경을 만들지 못했다.OTL)
버그가 발생하면 반드시 스샷과 함께 올려주세용!~*
약간의 딜레이를 주어서 풀어과는 과정이 나와 있다.(한칸마다 한번의 딜레이이기 때문에 여러칸이 동시에 열리면 마치 연산이 없는것 처럼 보인다.)

- 주의 : .NET 에서 만들어버린고로 실행할때는 반드시 넷프레임워크가 최신버전으로 업데이트가 되어야.. 이참에 윈도우 업데이트 하세용~ㅎ
(이거 업데이트 안되도 다른 컴퓨터에서 실행되게 하는 법이 있었던듯 한데..;;)


나에게 할말

이게 모야 ㅋㅋ;; 녀석.. 바쁘다 바뻐 --아영
└ 아.. 데블스 뒷풀이겸 회의때 말했는데..^^ 짜볼꺼라고.. 심심하자너~ 시간때우기~~휘적휘적..ㅎㅎ - 조현태
나 맨날 심심해서 뒹군다구 ~ 그런 즐길 것(?)을 나에게도 과제 주지 않으련? ㅋ 실력은 안되겠지만 ㅠ 노력은 해볼게 -아영
└;; 니가 실력이 안되면 난 뭐만드냐..;; 내가 할말이라고.. 뭐 짤거 있으면 같이 짜던가.. 최선을 다해서 방해는 안되도록 해볼께. - 조현태
ㅋㅋ 우리 자바 공부해서 뭔가 프로그램 만들어 보지 않을래? 겨울방학 때 ㅋㅋㅋ --아영
└만들어 보고싶다우..ㅎㅎ 그런데 나 1학년 마치고 군대갈껀디..ㅎㅎ 갔다오면 다 잊어먹어서 'printf가 모에요?'라고 묻는 웃지못할 사태가 발생할듯..;;ㅁ;;
어쨋든 기회가 되면 같이 만들어보자구..ㅎㅎ - 조현태

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:07
Processing time 0.0291 sec