오델로(리버시) 만들기(2) - 보드출력과 돌 뒤집기

 

*모바일은 소스코드가 보이지 않습니다*

 


목차

1.프로젝트에 들어가기에 앞서…….

2.오델로의 간단 플로우차트

3.개발계획

4.본격코딩

3.마치며…….


1.프로젝트에 들어가기에 앞서…….

전에도 말했듯이 처음부터 완벽한 사람은 아무도 없다. 또한 처음부터 완벽한 프로그램을 만들어내는 사람도 없다. 앞으로의 개발은 간단한 베이스부터 개발하여 조금씩 기능을 추가해서 완성해나가는 방식으로 만들어 나갈 것이다.



2.오델로의 간단 플로우차트

게임으로 이식하기 위해서는 오델로가 어떤 방식으로 흘러가야할지 알아야할 것 같아서 간단하게 플로우차트로 만들어보았다.

 

 

 

이해하기 어려운 플로우차트도 아니니 추가설명은 생략하도록 하겠다.


3.개발계획

조금만 더 열심히 머리를 싸맨다면 저 플로우차트에 있는 모든 내용을 한 번에 코딩할 수 도 있을 것이다. 그러나 처음부터 완벽하게 생각하고 만드는 것은 내 스타일도 아닐뿐더러 코딩실력도 그리 좋지 못한 나에게는 매우 어려운 일이다. 따라서 나는 맨 처음에도 언급했듯이 간단한 베이스부터 개발하여 조금씩 추가해 나갈 것이다. 따라서 이번 시간에는 ‘보드를 출력하고, 가능한 곳에 돌을 놓으면 뒤집히게’ 까지 구현하려한다.


구현하려 하는 것

1. 보드출력

2. 가능한 곳에 돌을 놓으면 뒤집힌다.


이 두 가지를 구현해보자.


4.본격 코딩

모든 API 프로그래밍의 시작은 ‘스켈레톤 코드’ 부터이다. 이 글을 보는 사람 중에 스켈레톤 코드를 모르는 사람은 없을 것이라 본다. 아래 첨부된 파일은 내가 쓰는 스켈레톤 코드이다. 그냥 입맛에 맞게 조금 수정했을 뿐이니 바뀐 부분은 대충 훑어보고 복사해서 쓰도록 하자. 아, 참고로 내가 쓰는 컴파일러는 VS2010이다.

 

 

 

스켈레톤코드.txt

내가 스켈레톤 코드를 올리는 이유는 소스코드를 다운받아 실행해 보기보다는 스켈레톤 코드에 직접 타이핑하는 것을 선호하는 사람이 있기 때문이다.


(초기 배치)


위 보드처럼 출력하기 위해서 필요한 이미지가 있는데 (보드의 외곽은 우선 배제하기로 했다)

1. 보드의 작은 정사각형 타일(이것을 8x8로 이어붙이면 오델로 보드가 완성된다.)

2. 검은 돌

3. 흰 돌


이렇게 세 가지 이미지가 필요하다. 이중에 첫 번째로 필요한 타일은 공식적으로라면 초록색 타일이어야 하지만 개인적으로 촌스럽다고 생각하는 바, 두 가지 색깔을 번갈아서 출력하도록 하겠다. 그리하여 필요한 비트맵리소스가 4개가 되었는데 바둑알은 까루님의 eps파일(http://cafe.naver.com/logosesang/384029)을 포토샵으로 편집하여 만들었다. 타일은 직접 그림판에서 64x64크기로 간단하게 만들었다.

 

리소스 다운 :  리소스.zip

 

 

먼저 이 네 가지 리소스를 프로젝트에 추가한다.

나는 리소스 편집기로 각각의 항목을 수정하여 저장하였다.

#define IDB_TILE1                     101

#define IDB_TILE2                     102

#define IDB_B_STONE                     103

#define IDB_W_STONE                     104

           

Winmain 함수에는 전혀 변화가 없으므로 이를 제외한 전체 소스이다. 필요한 부분에 주석을 달아 놓았으니 이해하는데 무리가 없을 것이다.

결과만 확인하고 싶다면 소스를 다운받아 실행만 하면 된다.

 

Othello.cpp

출력결과 :

 

5. 마치며…….

대충 궁색은 갖췄지만 부족한 점이 너무나도 많다. 둘 곳이 없어도 턴이 넘어가지 않으며, 누구 턴인지도 헷갈리고, 게임이 끝나지도 다시 시작할 수 도 없다. 아무 소리도 안나니 밋밋하다. 다음번에는 좀 더 기능을 갖춰보자.


P.S

이해가 잘 되지 않는다면 다시 한 번 코드를 천천히 따라가다 보면 이해할 수 있을 것입니다. 그래도 이해가 안 되면 댓글로 달아주세요. 최대한 노력하겠습니다.

그리고 부족하거나 더 추가되었으면 하는 점 또한 댓글로 달아주시면 감사하겠습니다.

 

P.S +

실수로 글을 삭제해버려서 다시 올렸습니다 ㅠㅠ 죄송합니다

 

by Conscientia 2013. 1. 15. 17:02
| 1 |