SlideShare a Scribd company logo
1 of 11
Download to read offline
- 1 -
윈도우즈 API 프로그래밍
프로젝트 보고서
결 합
(Exist Or Null)
신우진
- 2 -
보고서 목차
1. 서론
2. 본론
가. 프로그램 루틴 플로우차트 및 해설
나. 프로그램 시연
3. 결론
4. 참고문헌
- 3 -
1. 서론
결합게임은 tvN tv프로그램 ‘더 지니어스’에서 소개된 바 있는 두뇌게임이다. 해외에서는 Set이라고 알려져
있는 결합게임은 3x3x3개의 속성을 가진 카드중 3x3개를 뽑아 그 중 속성이 모두 같거나, 모두 다른 3장의
카드를 뽑는 방식이다. 대전방식의 게임을 구상하는 방법을 생각하다 지능을 이용한 퍼즐 아이디어에 착안하
여 결합게임을 제작하였다. 다음은 이를 윈도우 API를 이용하여 구현한 결과에 대한 내용이다.
구성도와 상세 알고리즘은 추후 기술할 본론과 실험결과에서 확인할 수 있다.
2. 본론
프로그램 전반적인 플로우차트
1. rect객체는 StageGUI, SystemGUI, setRect, progressGUI, leftGUI, rightGUI 각 영역을 말하며
추후 기술설명에서 영역을 확인할 수 있다.
2. DrawStage는 stageRect를 그리는 알고리즘, DrawGUI는 GUI 영역 전체를 갱신하는 알고리즘이다.
3. 이 프로그램에서는 게임을 즐기기 위한 조작으로 KEYDOWN, LBUTTONDOWN에 모두 대응한다.
4. 다시 조작입력 대기로 돌아간다.
- 4 -
키/마우스 이벤트 핸들러 플로우차트
1. 넘버패드와 일반 숫자키 모두 작동할 수 있으며, 들어온 킷값을 계산하여 타일의 좌표를 구한다.
2. wParam이 엔터면 결합체크루틴을 호출한다
3. 클릭좌표가 setRect이면 결합체크 루틴을 호출한다.
4. 클릭좌표가 stageGUI이면 어 타일을 선택했는지 파악한다.
5. 0,0으로 타일위치를 가정하고 클릭좌표를 타일사이즈로 나누어 인덱스를 구한다.
6. 해당 타일로 이벤트핸들러 루틴을 호출한다.
7. 결에 실패했을 때 AfterSetUnSet에 대한 이벤트핸들러를 호출한다. 6회 이상 연속 오답시 현재 스
테이지가 종료되므로 이를 확인한다. 또한 사용자가 정답을 외친 것이므로 resetRemainTime울 호출하
여 제한시간을 초기화한다.
- 5 -
DrawStage, DrawGUI 함수 플로우차트
1. 타일의 속성값에 맞춰 비트맵을 출력하고, 선택되어있는 타일은 NOTSRCCOPY옵션으로 출력한다.
2. 현재 타일의 Rect보다 ltrb가 10씩작은 숫자칸 RECT를 정의하고 오른쪽 위에 숫자를 표시한다.
3. DrawText를 계승한 향상형 함수이다. 출력옵션을 파라미터로 줄 수 있고 길이별 문자크기조정이 가능하다.
4. 타일의 뒷면을 출력한다
5. GUI영역들을 구분하는 선을 그린다.
6. system메시지를 출력한다.
7. 시작이 아니라면 시스템메시지를 정리하도록 3번타이머를 호출하고, 시작중이라면 각 GUI영역에 맞게 메시지들
을 출력한다
8. 각 유저의 점수를 표시하고
9. 각 유저가 맞춘 조합을 표시한다
10. progressGUI에 남은시간과 진행도로 표시한다.
- 6 -
4개의 타이머 플로우차트
1. 1회용 타이머로 다음 스테이지로 넘어가기 전에 3초간 휴식을 취한다.
2. 유저시간제한을 수동으로 입력시 타이머 중복호출로 정상작동하지 않기 떄문에 짧은간격으로 목표
초까지 줄여나간다.
3. 만약 제한시간이 초과되면 유저턴을 넘기고 제한시간을 초기화한다. 또한 맞추지 못한것이기 때문에
오답횟수를 증가하고 6회이상 오답인지 체크한다.
4. 1회용 타이머로 SystemMsg를 출력하고 다시 지우기위해 사용된다. 이후 SystemGUI영역만 다시
그릴 수 있도록 한다.
- 7 -
setUnset(결합) 플로우차트
1. selectCount가 0이면 결, 3이면 합, 그 외에는 결합조건에 부적합하므로 상대방에게 턴을 넘긴다.
2. 결의 성공조건은 모든 경우의 수를 탐색하여 나온 정답의 개수와 현재 유저들이 답한 정답개수의
일치이다. 이 조건이 TRUE일 경우 스테이지가 3이 초과했으면 게임을 종료할 수 있도록 만든다.
3. 2의 다음 조건이 FALSE라면 다음 스테이지가 존재하므로 대기상태(isStart = 2)로 만든다.
4. 게임 시작에서는 턴이 랜덤하게 결정되지만 결 이후에는 오답이나 정답에 대한 보상으로 선을 준다.
5. 제한시간 타이머(2)를 중단하고 다음 스테이지를 위한 준비타이머(0)을 호출한다.
6. 선택한 타일이 3개라면 합을 외친 것으로 합의 무결성을 체크한다. 여기서 parameter는 유저 질의
인지 아니면 경우의 수를 찾기위한 질의인지를 판단하는 bool값이다. 합체크는 각 타일의 속성(배경,
도형, 색상)값을 각각 더하여 3으로 나눴을 경우 나머지가 0이면 합조건에 부합하다.
7. 중복된 합인지 검사한다. 현재 유저들이 답한 정답을 저장하는 배열을 전수조사하여 3개의 타일이
중복된 경우 중복합임을 알리고 아닐 경우 합의 성공을 알린다.
8. 어떤 결과가 나오더라도 마지막에는 모든 타일의 선택을 해제하고, 턴을 넘기며, 제한시간을 초기화
하고 시스템메시지를 출력하는 루틴이 호출된다.
- 8 -
다음은 결합게임 윈도우의 각 GUI영역들이다. stageGUI는 타일과 게임진행을 위한 영역이며 leftGUI,
rightGUI는 각 유저들의 점수와 정답현황을 나타내주는 영역이다. setRect 영역은 게임 시작 후 마우스로 게
임을 조작할 시 엔터키를 대체한다. systemGUI영역은 시스템메시지를 뿌려주는 영역, progressGUI는 유저의
턴과 남은 시간을 표시하는 영역이다.
프로그램 실행후 첫 화면이며 Enter를 누르면 게임을 시작할 수 있다.
- 9 -
initAllTile함수를 통해 스테이지가 생성되고 drawStage와 drawGUI함수를 통해 화면에 뿌려준다.
밑에 오른쪽 유저의 턴임을 보여주고 남은시간과 그에따른 프로그레스바를 Rectangle로 구현했다.
2,3,4번 타일을 선택한 화면이다. 각 타일은 NOTSRCCOPY옵션으로 반전색상을 표현하고, 더 구분 할 수 있
도록 왼쪽위에 작은 빨간 원으로 표시된다.
- 10 -
각각 좌측 화면은 플레이어1이 합에 성공하여 leftGUI에 점수와 정답이 반영된 모습이다.
우측화면은 결에 성공하여 다음스테이지로 넘어가는 모습이다.
1:3점으로 시작한 스테이지에서 플레이어1이 5,6,7을 맞추고 (+1점) 플레이어2가 결에 오답(-1점)을 하여
2:2점이 된 화면이다.
- 11 -
결론
결합 프로그램을 설계, 구성하면서 한 학기간 배운 윈도우 API 함수들을 종합적으로 이용하여 다시 한 번
복습하는 시간이 되었고 여러 파라미터로 같은 함수의 여러 다른 결과를 확인해보고 습득할 수 있었다.
어떤 프로그램을 만들어야할지 주제를 선택하는 과정도 긴 시간을 들였지만 프로그램 설계과정에서 결과
합을 어떻게 구현할 것인가에 많은 시간을 투자했다. 평소 2진수와 10진수만을 사용하는게 보통이므로 그 이
상의 것을 생각하지 못했으나 3x3x3이라는 속성을 이용하여 3진수를 바탕으로 결합조건을 체크하는 방법을
사용했다. 또한 이후에 모든 경우의 수를 탐색하는 과정을 생각하던 중 최악의 알고리즘을 생각해내어 더 좋
은 방법을 생각하던중 한 블로그에서 참고할만한 자료를 제시해주었다. 개인적인 견해로는 인터넷에 의존하는
것이 꼭 나쁜게 아니라 오히려 많은 자료가 들어있는 인터넷공간을 활용하여 검색을 하되 개인이나 팀에서
생각하고 또 생각하면서 생각의 깊이를 넓히는 과정이 중요하다고 생각하여 이번에도 인터넷에 많은 자료가
있다는 것을 알지만 내가 그동안 공부하고 생각해내었던 자료들을 바탕으로 발견해내려고 노력하였다.
또한 이후에 네트워크 소켓 프로그래밍을 이용하여 결합게임을 다른 원격 PC와 1:1 대결을 할 수 있도록
프로그램을 수정해보는것에 도전하려고 한다.
참고문헌
1) http://gorakgarak.tistory.com/523 모든조합경우의수만들기 (java)

More Related Content

More from 우진 신

비교논문 분석 - 디지털 IoT 도어락 DDiT
비교논문 분석 - 디지털 IoT 도어락 DDiT비교논문 분석 - 디지털 IoT 도어락 DDiT
비교논문 분석 - 디지털 IoT 도어락 DDiT우진 신
 
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)우진 신
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc우진 신
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계우진 신
 
주차관리 시스템 프로토타입 제안서
주차관리 시스템 프로토타입 제안서주차관리 시스템 프로토타입 제안서
주차관리 시스템 프로토타입 제안서우진 신
 
유비쿼터스 IoT 도어락 프로토타입 발표자료
유비쿼터스 IoT 도어락 프로토타입 발표자료유비쿼터스 IoT 도어락 프로토타입 발표자료
유비쿼터스 IoT 도어락 프로토타입 발표자료우진 신
 
유비쿼터스 Gps원리 발표자료
유비쿼터스 Gps원리 발표자료유비쿼터스 Gps원리 발표자료
유비쿼터스 Gps원리 발표자료우진 신
 
데이터베이스(상) 수업 요구분석 및 모델링 발표자료
데이터베이스(상) 수업 요구분석 및 모델링 발표자료데이터베이스(상) 수업 요구분석 및 모델링 발표자료
데이터베이스(상) 수업 요구분석 및 모델링 발표자료우진 신
 
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료우진 신
 
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료우진 신
 
데이터베이스(상) 12년도 da설계 공모대전 풀이
데이터베이스(상) 12년도 da설계 공모대전 풀이데이터베이스(상) 12년도 da설계 공모대전 풀이
데이터베이스(상) 12년도 da설계 공모대전 풀이우진 신
 
사물인터넷을 활용한 디지털 도어락 DDiT 비교논문 발표자료 1차
사물인터넷을 활용한 디지털 도어락  DDiT 비교논문 발표자료 1차사물인터넷을 활용한 디지털 도어락  DDiT 비교논문 발표자료 1차
사물인터넷을 활용한 디지털 도어락 DDiT 비교논문 발표자료 1차우진 신
 
171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료우진 신
 
C# 재무관리 프로그램(주제고정) 발표자료
C# 재무관리 프로그램(주제고정) 발표자료C# 재무관리 프로그램(주제고정) 발표자료
C# 재무관리 프로그램(주제고정) 발표자료우진 신
 

More from 우진 신 (14)

비교논문 분석 - 디지털 IoT 도어락 DDiT
비교논문 분석 - 디지털 IoT 도어락 DDiT비교논문 분석 - 디지털 IoT 도어락 DDiT
비교논문 분석 - 디지털 IoT 도어락 DDiT
 
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)
INSTAGRatio 소개영상 (instagram 서드파티 어플리케이션)
 
Mlp logical input pattern classfication report doc
Mlp logical input pattern classfication report docMlp logical input pattern classfication report doc
Mlp logical input pattern classfication report doc
 
171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계171220 웹프로그래밍 web app 토렌트 관리체계
171220 웹프로그래밍 web app 토렌트 관리체계
 
주차관리 시스템 프로토타입 제안서
주차관리 시스템 프로토타입 제안서주차관리 시스템 프로토타입 제안서
주차관리 시스템 프로토타입 제안서
 
유비쿼터스 IoT 도어락 프로토타입 발표자료
유비쿼터스 IoT 도어락 프로토타입 발표자료유비쿼터스 IoT 도어락 프로토타입 발표자료
유비쿼터스 IoT 도어락 프로토타입 발표자료
 
유비쿼터스 Gps원리 발표자료
유비쿼터스 Gps원리 발표자료유비쿼터스 Gps원리 발표자료
유비쿼터스 Gps원리 발표자료
 
데이터베이스(상) 수업 요구분석 및 모델링 발표자료
데이터베이스(상) 수업 요구분석 및 모델링 발표자료데이터베이스(상) 수업 요구분석 및 모델링 발표자료
데이터베이스(상) 수업 요구분석 및 모델링 발표자료
 
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 2차 발표자료
 
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료
데이터베이스(상) 수업 요구분석 및 Er d 변형 1차 발표자료
 
데이터베이스(상) 12년도 da설계 공모대전 풀이
데이터베이스(상) 12년도 da설계 공모대전 풀이데이터베이스(상) 12년도 da설계 공모대전 풀이
데이터베이스(상) 12년도 da설계 공모대전 풀이
 
사물인터넷을 활용한 디지털 도어락 DDiT 비교논문 발표자료 1차
사물인터넷을 활용한 디지털 도어락  DDiT 비교논문 발표자료 1차사물인터넷을 활용한 디지털 도어락  DDiT 비교논문 발표자료 1차
사물인터넷을 활용한 디지털 도어락 DDiT 비교논문 발표자료 1차
 
171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료171105 웹프로그래밍 static web 몰빵 발표자료
171105 웹프로그래밍 static web 몰빵 발표자료
 
C# 재무관리 프로그램(주제고정) 발표자료
C# 재무관리 프로그램(주제고정) 발표자료C# 재무관리 프로그램(주제고정) 발표자료
C# 재무관리 프로그램(주제고정) 발표자료
 

Windows API Programming Project Report

  • 1. - 1 - 윈도우즈 API 프로그래밍 프로젝트 보고서 결 합 (Exist Or Null) 신우진
  • 2. - 2 - 보고서 목차 1. 서론 2. 본론 가. 프로그램 루틴 플로우차트 및 해설 나. 프로그램 시연 3. 결론 4. 참고문헌
  • 3. - 3 - 1. 서론 결합게임은 tvN tv프로그램 ‘더 지니어스’에서 소개된 바 있는 두뇌게임이다. 해외에서는 Set이라고 알려져 있는 결합게임은 3x3x3개의 속성을 가진 카드중 3x3개를 뽑아 그 중 속성이 모두 같거나, 모두 다른 3장의 카드를 뽑는 방식이다. 대전방식의 게임을 구상하는 방법을 생각하다 지능을 이용한 퍼즐 아이디어에 착안하 여 결합게임을 제작하였다. 다음은 이를 윈도우 API를 이용하여 구현한 결과에 대한 내용이다. 구성도와 상세 알고리즘은 추후 기술할 본론과 실험결과에서 확인할 수 있다. 2. 본론 프로그램 전반적인 플로우차트 1. rect객체는 StageGUI, SystemGUI, setRect, progressGUI, leftGUI, rightGUI 각 영역을 말하며 추후 기술설명에서 영역을 확인할 수 있다. 2. DrawStage는 stageRect를 그리는 알고리즘, DrawGUI는 GUI 영역 전체를 갱신하는 알고리즘이다. 3. 이 프로그램에서는 게임을 즐기기 위한 조작으로 KEYDOWN, LBUTTONDOWN에 모두 대응한다. 4. 다시 조작입력 대기로 돌아간다.
  • 4. - 4 - 키/마우스 이벤트 핸들러 플로우차트 1. 넘버패드와 일반 숫자키 모두 작동할 수 있으며, 들어온 킷값을 계산하여 타일의 좌표를 구한다. 2. wParam이 엔터면 결합체크루틴을 호출한다 3. 클릭좌표가 setRect이면 결합체크 루틴을 호출한다. 4. 클릭좌표가 stageGUI이면 어 타일을 선택했는지 파악한다. 5. 0,0으로 타일위치를 가정하고 클릭좌표를 타일사이즈로 나누어 인덱스를 구한다. 6. 해당 타일로 이벤트핸들러 루틴을 호출한다. 7. 결에 실패했을 때 AfterSetUnSet에 대한 이벤트핸들러를 호출한다. 6회 이상 연속 오답시 현재 스 테이지가 종료되므로 이를 확인한다. 또한 사용자가 정답을 외친 것이므로 resetRemainTime울 호출하 여 제한시간을 초기화한다.
  • 5. - 5 - DrawStage, DrawGUI 함수 플로우차트 1. 타일의 속성값에 맞춰 비트맵을 출력하고, 선택되어있는 타일은 NOTSRCCOPY옵션으로 출력한다. 2. 현재 타일의 Rect보다 ltrb가 10씩작은 숫자칸 RECT를 정의하고 오른쪽 위에 숫자를 표시한다. 3. DrawText를 계승한 향상형 함수이다. 출력옵션을 파라미터로 줄 수 있고 길이별 문자크기조정이 가능하다. 4. 타일의 뒷면을 출력한다 5. GUI영역들을 구분하는 선을 그린다. 6. system메시지를 출력한다. 7. 시작이 아니라면 시스템메시지를 정리하도록 3번타이머를 호출하고, 시작중이라면 각 GUI영역에 맞게 메시지들 을 출력한다 8. 각 유저의 점수를 표시하고 9. 각 유저가 맞춘 조합을 표시한다 10. progressGUI에 남은시간과 진행도로 표시한다.
  • 6. - 6 - 4개의 타이머 플로우차트 1. 1회용 타이머로 다음 스테이지로 넘어가기 전에 3초간 휴식을 취한다. 2. 유저시간제한을 수동으로 입력시 타이머 중복호출로 정상작동하지 않기 떄문에 짧은간격으로 목표 초까지 줄여나간다. 3. 만약 제한시간이 초과되면 유저턴을 넘기고 제한시간을 초기화한다. 또한 맞추지 못한것이기 때문에 오답횟수를 증가하고 6회이상 오답인지 체크한다. 4. 1회용 타이머로 SystemMsg를 출력하고 다시 지우기위해 사용된다. 이후 SystemGUI영역만 다시 그릴 수 있도록 한다.
  • 7. - 7 - setUnset(결합) 플로우차트 1. selectCount가 0이면 결, 3이면 합, 그 외에는 결합조건에 부적합하므로 상대방에게 턴을 넘긴다. 2. 결의 성공조건은 모든 경우의 수를 탐색하여 나온 정답의 개수와 현재 유저들이 답한 정답개수의 일치이다. 이 조건이 TRUE일 경우 스테이지가 3이 초과했으면 게임을 종료할 수 있도록 만든다. 3. 2의 다음 조건이 FALSE라면 다음 스테이지가 존재하므로 대기상태(isStart = 2)로 만든다. 4. 게임 시작에서는 턴이 랜덤하게 결정되지만 결 이후에는 오답이나 정답에 대한 보상으로 선을 준다. 5. 제한시간 타이머(2)를 중단하고 다음 스테이지를 위한 준비타이머(0)을 호출한다. 6. 선택한 타일이 3개라면 합을 외친 것으로 합의 무결성을 체크한다. 여기서 parameter는 유저 질의 인지 아니면 경우의 수를 찾기위한 질의인지를 판단하는 bool값이다. 합체크는 각 타일의 속성(배경, 도형, 색상)값을 각각 더하여 3으로 나눴을 경우 나머지가 0이면 합조건에 부합하다. 7. 중복된 합인지 검사한다. 현재 유저들이 답한 정답을 저장하는 배열을 전수조사하여 3개의 타일이 중복된 경우 중복합임을 알리고 아닐 경우 합의 성공을 알린다. 8. 어떤 결과가 나오더라도 마지막에는 모든 타일의 선택을 해제하고, 턴을 넘기며, 제한시간을 초기화 하고 시스템메시지를 출력하는 루틴이 호출된다.
  • 8. - 8 - 다음은 결합게임 윈도우의 각 GUI영역들이다. stageGUI는 타일과 게임진행을 위한 영역이며 leftGUI, rightGUI는 각 유저들의 점수와 정답현황을 나타내주는 영역이다. setRect 영역은 게임 시작 후 마우스로 게 임을 조작할 시 엔터키를 대체한다. systemGUI영역은 시스템메시지를 뿌려주는 영역, progressGUI는 유저의 턴과 남은 시간을 표시하는 영역이다. 프로그램 실행후 첫 화면이며 Enter를 누르면 게임을 시작할 수 있다.
  • 9. - 9 - initAllTile함수를 통해 스테이지가 생성되고 drawStage와 drawGUI함수를 통해 화면에 뿌려준다. 밑에 오른쪽 유저의 턴임을 보여주고 남은시간과 그에따른 프로그레스바를 Rectangle로 구현했다. 2,3,4번 타일을 선택한 화면이다. 각 타일은 NOTSRCCOPY옵션으로 반전색상을 표현하고, 더 구분 할 수 있 도록 왼쪽위에 작은 빨간 원으로 표시된다.
  • 10. - 10 - 각각 좌측 화면은 플레이어1이 합에 성공하여 leftGUI에 점수와 정답이 반영된 모습이다. 우측화면은 결에 성공하여 다음스테이지로 넘어가는 모습이다. 1:3점으로 시작한 스테이지에서 플레이어1이 5,6,7을 맞추고 (+1점) 플레이어2가 결에 오답(-1점)을 하여 2:2점이 된 화면이다.
  • 11. - 11 - 결론 결합 프로그램을 설계, 구성하면서 한 학기간 배운 윈도우 API 함수들을 종합적으로 이용하여 다시 한 번 복습하는 시간이 되었고 여러 파라미터로 같은 함수의 여러 다른 결과를 확인해보고 습득할 수 있었다. 어떤 프로그램을 만들어야할지 주제를 선택하는 과정도 긴 시간을 들였지만 프로그램 설계과정에서 결과 합을 어떻게 구현할 것인가에 많은 시간을 투자했다. 평소 2진수와 10진수만을 사용하는게 보통이므로 그 이 상의 것을 생각하지 못했으나 3x3x3이라는 속성을 이용하여 3진수를 바탕으로 결합조건을 체크하는 방법을 사용했다. 또한 이후에 모든 경우의 수를 탐색하는 과정을 생각하던 중 최악의 알고리즘을 생각해내어 더 좋 은 방법을 생각하던중 한 블로그에서 참고할만한 자료를 제시해주었다. 개인적인 견해로는 인터넷에 의존하는 것이 꼭 나쁜게 아니라 오히려 많은 자료가 들어있는 인터넷공간을 활용하여 검색을 하되 개인이나 팀에서 생각하고 또 생각하면서 생각의 깊이를 넓히는 과정이 중요하다고 생각하여 이번에도 인터넷에 많은 자료가 있다는 것을 알지만 내가 그동안 공부하고 생각해내었던 자료들을 바탕으로 발견해내려고 노력하였다. 또한 이후에 네트워크 소켓 프로그래밍을 이용하여 결합게임을 다른 원격 PC와 1:1 대결을 할 수 있도록 프로그램을 수정해보는것에 도전하려고 한다. 참고문헌 1) http://gorakgarak.tistory.com/523 모든조합경우의수만들기 (java)