예전에 우연찮게 접하게 된 게임트리(Game Tree)란 용어.
그리고 미니맥스(Mini Max), 알파-베타 가지치기(alpha-beta pruning)
그 당시에는 대충 무슨 것인지 알고 있었는데 구현을 할 줄 몰랐다.
그 이후에도 몇 번 책에서 보긴 했는데,
자세한 설명이 없어서(사실 내가 노력하지 않은 것 일수도)실제적인 구현을 해 보지 못했는데,
최근에 좋은 자료를 우연치 않게 얻어서..
다시 공부하게 되었다.
자료를 보내 주신 분께 다시 한번 감사의 말씀을-ㅋ
자료는 장기 AI 를 짜는 것(MFC 기반)이었는데,
UI 구현 하기도 귀찮고 해서..
Tic-Tac-Toe로 결정..
언어는 제일 자신 있는 JAVA로
UI는 SWT로 구현..
시간 남으면 알고리즘을 정리 해봐야...
그리고 이번엔 오델로 AI 를 짜봐야..ㅋ
실행하려면 첨부된 zip 풀고
jar 파일 실행시키면 끝
java -jar TTCAI.jar
(그림 파일을 jar 파일 안에 넣어서 실행하면 좋은데
할 줄 몰라서-.-)
Tag : Ai, alpha-beta pruning, Game Tree, minimax, tic-tac-toe, 게임트리, 미니맥스, 알파베타 가지치기, 인공지능
프로그래밍 관련 포스팅을 할 때마다,
코드를 보기 좋게 삽입할 방법을 몰라서 그냥 table tag 를 써서 해 왔는데
보기가 좋지 않아서 늘 맘에 걸렸다.
그러다가 얼마전에 어느 블로그에서 코드가 예쁘게 써져 있는 것을 보고
찾아보니깐
SyntaxHighlighter 라는 것을 써서 올린 것 이었다.
SyntaxHighlighter 홈페이지
티스토리에 설치하는 방법은
구글이나 네이버에서 찾아 보면 많이 나오므로 생략하고 검색링크로 대체.
syntaxhighlighter + tistory
테스트 코드
Tag : syntaxhighlighter, Tistory, 코드, 프로그래밍
언제부터인가
Eclipse 에서 @override 에서 에러 마커가 떴다..
분명히 그 전부터 멀쩡히 에러 마커가 안 뜬 소스였다..
구글링을 해보니
Java 5.0까지는 @override를
interface 의 method를 implement 할 때 사용 못하는데,
6.0 부터는 위의 경우에도 사용할 수 있다는 것이었다..
그러자 생각난 것이,
얼마전에
[Window] - [Preference] 에서
Java- Compiler 에서
Compiler compliance level 을 1.5 로 바꾼것이 생각 났다..
그래서 이걸 다시 1.6으로 바꿨더니,
에러가 사라졌다...
아래는 수정한 부분..
Wizard 를 만들던 중에
user의 의해
wizardPage의 화면을 변경하고자 했다..
그래서
user의 행동에 따라서 widget은 추가 했는데,
화면에는 변화가 보이지 않았다.
그래서 redraw() 를 불렀는데
별 변화가 없었고,
언제나 그렇지만.....
구글로~~~~
그렇게 해 본 결과
pack() 란 method를 알게 되었다.
api를 찾아 보니..
receiver가 preferred size에 맞게 resize 하도록 한다고 되어있다.
그래서
이것을 부르면
화면에 변경 사항이 반영 되는 것이다.
관련 예제 코드는 아래에 첨부
Tag : ECLIPSE SWT, Java, moveAbove, moveBelow
GEF 에서
사용자의 변경 요청이
Request 형태로 넘어오는 데 이러한 요청 들이
RequestConstants의 정해진 field에 맞게 type을 셋팅 한다.
대표적인(내가 써본) RequestConstants 의 field 를 보면
REQ_CREATE, REQ_RESIZE_CHILDREN, REQ_MOVE_CHILDREN
등....
그리고 최근에 잘 쓴 건 REQ_OPEN...
차례 대로 보면
REQ_CREATE
Object 가 생성 될 때.
REQ_RESIZE_CHILDREN
a group of children 의 사이즈 변경
REQ_MOVE_CHILDREn
a group of children 의 이동
REQ_OPEN
receiver에 user 가 mouse double-click 할 때
여기서 REQ_OPEN 의 경우..
GEF 프로그래밍 하다보면 마우스 처리 할 때
mouse listener 를 사용 하여 double-click을 처리하려고 하면
mousePressed(MouseEvent e) 만 불리는 경우가 있는데 ,
이것은 mousePressed~ 가 불리고 나서 다른 리스너로 이벤트가 넘어가기 때문이다.
따라서 이 때 mouse listener를 사용하지 말고
해당 모델과 관련된 editpart 에서
로 처리하면 된다
Tag : ECLIPSE GEF, MOUSE DOUBLE CLICK, Request
1. GEF 란 무엇인가
순서대로야 하려면 GEF 가 무엇인지 부터 해야 제대로 겠지만
사정이 있어서 그건 다음으로 미루고
단순히 GEF 는 Graphical Editing Framework 의 약자라는 것만 봐두고
다음 기회로...
2. GEF 설치하기
그럼 본격적으로 들어가기 전에
공식 사이트는 http://www.eclipse.org/gef 이다.
사이트를 들어가면
첫 페이지에 바로 Downloads가 바로 보인다
GEF Downloads 를 클릭하면
GEF 버젼에 따라 다운로드 링크가 sort 되어 있다.
자신의 Eclipse 버젼에 맞게
GEF 버젼을 골라서
SDK 와 Example 모두 있는
ALL Version 을 다운 받자.
본인의 경우에는
Eclipse version이 3.3 이므로,
GEF 3.3 ALL version DOWN!!
다운 받으면 압축 파일 하나인데..
이것을 적당한 곳에 압축 풀자!!!
그 다음에 이제는 이클립스 화면으로..
이클립스 메뉴에서
[Help] - [Software Updates] - [Find and Install] 선택
Search for new features to install 선택한 후에 Next
New Local Site 를 선택하여서
압축을 푼 폴더를 선택한 후, OK 버튼
Fininsh 버튼
그 다음에 아래와 같은 페이지가 뜨면, 체크를 아래와 같이 해준후에
Next
이 거 다음에는 적절히 라이센스 동의 해주면 설치 끝나는 듯..
(사실 이 부분도 원래 자세히 썼었는데.. '예기치 못한' 오류로 익스플로러가 종료되면서
사라져 버렸다..
그 이후로 의욕 상실...)
3. Example 살펴 보기
그렇게 설치가 끝나면
이제 예제를 살펴 보자.~
예제를 실행시키려면
eclipse 에서 [File] - [ New] - [Other..] 를 선택하면
이제 Examples라는 항목이 있을 것이고..
그 하위 항목으로 GEF 가 있을 것이다..
그 아래에서 마음에 드는 예제 고르고
파일명 적절히 써주고 위치 정한다음에 Finish 버튼 클릭하면
창이 하나 뜨면서 GEF 예제를 테스트 할 수 있을 것이다...
아래 화면은 Flow Diagram 예제이다.
--------
캡쳐를 한 게 이상해서 캡쳐 화면이 이상하게 보이네요...;;;
사실 이거 한 번 쓰다가 날려 먹어서..
처음에 썼던 것 보다 약간 성의가 부족한 것 같네요... 이런이런...
올망
| 2009.03.27 02:37 신고 | PERMALINK | EDIT | REPLY |헐,, 알파베타......미니맥스...틱텍토..= ㅁ=;;
스웨덴에서 AI 시간에 배운것들이군(...)
이번에 우리학교꺼 AI 수업듣는데,,
우리학교에선 뉴런네트워크배우더라 ㅇ ㅅㅇ;
그건 그렇고,
나 자바좀 알려줘= ㅁ=...
왠지 진짜 써본지 오래된거같아.....................
카메란
| 2009.03.29 11:39 신고 | PERMALINK | EDIT | REPLY |으흠 뉴런 네턱이라;;;
....
자바야=.=
뭐 그냥 하면 되는거;;ㅋ