[C언어] 오델로, 오셀로 (Othello) 게임 구현
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[C언어] 오델로, 오셀로 (Othello) 게임 구현에 대한 보고서 자료입니다.

목차

(1) 목적

(2) 접근방법 및 개발환경
2.1) 접근 방법
2.1.1) 오델로
2.1.2) 게임방법
2.2) 개발환경

(3) 흐름도 3
3.1) main()
3.2) menu()
3.3) user()
3.4) comAI()

(4) 자료구조, 주요 변수 및 함수 설명
4.1) 자료구조
4.2) 주요 변수
4.1) 함수 설명

(5) 실행 결과

(6) 참조 사항

(7) 소스코드

(8) 특기사항

본문내용

(1) 목적
오델로 프로그램 작성을 통해 간단한 게임프로그래밍에 대한 이해와 능력을 향상시킨다. 또한, 오델로 게임에서 컴퓨터 알고리즘 구현을 통해 재귀 함수가 어떠한 형태로 예측 알고리즘에 사용될 수 있는지 확인한다
서양에서 리버시라고도 불리기도 하는 오델로는 흑과 백, 이렇게 두가지 색을 가지고 즐기는 보드 게임이며, 초록색이면서 8x8 크기로 이루어진 오델로판에서 게임을 하게 된다. 두 대국자에게는 한쪽 면은 검은색, 반대 면은 흰색인 돌(밑의 사진 참조) 64개가 주어지고 처음엔 각각 전체 돌수의 반인 32개씩의 돌을 가지고 시작한다. 하지만 게임 도중 패스등의 발생으로 상대의 돌이 먼저 다 떨어지게 되면 자기가 가진 돌을 상대방에게 건내 주게 된다. 어느 색이 더 많은가에 따라 승패가 갈린다.
2.1.2 ) 게임 방법
오델로 게임은 대각선과 가로 세로의 네 방향의 양 끝점이 동일한 색깔의 돌이 되게 놓으면 그 가운데 있는 돌들은 뒤집히게 된다.
또한, 돌은 상대방 돌을 뒤집을 수 없는 위치엔 둘 수 없으며, 돌을 아무 곳에도 놓을 수 없다면 다음 차례로 넘어간다.
2.2 ) 개발환경
• OS : Ubuntu 8.10
• 커널 : Linux 2.6.27-11-generic
• 플랫폼 : i686
• 언어 : C언어
• 에디터 : VIM 7.1.314
• 컴파일러 : gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu12)
오델로 게임 전체의 흐름도를 나타내었다. 크게 main(), menu() user(), comAI() 함수의 동작 과정을 흐름도로 표현하였고 그에 따른 다른 함수들은 목록 (4)에 자세히 설명할 것이므로 흐름도에선 간단한 동작만 설명하겠다.
main() 함수는 main.c 에서부터 시작한다. 이 함수로 인해 오델로 게임이 실행되는 것이다. main() 함수는 시작하자 마자 startGame(), init() 함수를 호출한다. 두 함수는 level 설정과 초기화 실행을 한다. 이 작업이 완료되면 viewBoard()를 실행하여 오델로 판을 화면에 출력하고 menu() 함수를 호출한다.
menu() 함수의 결과 값을 result로 받아 세가지 상황에 대해 분기한다. 첫째, result 값이 1이면 사용자가 명령어를 입력한 것이므로 순서를 다음 턴으로 넘기지 않고 다시 사용자로부터 입력을 받으려고 대기한다. 둘째, result 값이 -1이면 사용자나 컴퓨터가 돌을 놓을 수 없는 경우이다. 이런 경우 각각에 대해 Bset이나 Wset의 값을 설정하여 준다. Bset 과 Wset 값이 둘다 1일 경우는 둘 다 놓을 수 없는 경우 이기 때문에 게임결과를 출력하고 종료시킨다. 셋째, result 값이 0이면 사용자나 컴퓨터가 돌을 놓았으므로 Bset과 Wset을 초기화 시켜주는 것이다.
menu() 함수는 컨트롤 함수라고도 할 수 있다. 게임의 전반적인 상태를 관리하고 돌을 놓는 작업을 하는 함수들을 호출 한다. 게임의 전반적인 상태관리란 현재 state가 어떠한지를 조사하여 게임을 종료시키거나 오류 메시지를 출력하거나 하는 작업을 일컫는다.
먼저, printsysM()로 메시지를 출력한다. 이것은 System 메시지 이다. System 메시지는 “B 차례입니다.” 와 같은 것을 가리킨다. viewSel()은 사용자가 사용할 수 있는 명령 옵션에 대한 내용을 출력하는 함수이다. 이어 permi() 함수를 호출하게 되는데 permi() 함수는 돌을 놓을 수 있는 유효한 자리를 찾는 함수이다. 이 함수의 result는 입력된 좌표에 돌을 놓았을 때에 뒤집히는 돌의 방향을 나타낸다.
첫째, result 값이 0이면 돌을 놓을 자리가 없으므로 상대방에게 순서를 넘긴다. 둘째, result 값이 0이 아니면 돌을 놓을 수 있는 것이므로 현재 차례가 누구인지 조사하게 된다. 현재 차례는 whoTerm에 저장된 값을 읽어옴으로 알 수 있다. 차례에 따라




실행방법

$ ./othello
========================
1. 3 Level
2. 5 Level

System : 컴퓨터의 레벨을 선택하세요
Input -> 1
W = 2 B = 2
===================================
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-----------------------------------
1 | | | | | | | | |
-----------------------------------
2 | | | | | | | | |
-----------------------------------
3 | | | | | | | | |
-----------------------------------
4 | | | | W | B | | | |
-----------------------------------
5 | | | | B | W | | | |
-----------------------------------
6 | | | | | | | | |
-----------------------------------
7 | | | | | | | | |
-----------------------------------
8 | | | | | | | | |
-----------------------------------
System : B 차례입니다.
n : 새게임, p : 한수 무르기
s : 저장, o : 읽기, q : 종료
ex) 4,3
Input (B) => 4,3
W = 1 B =

키워드

  • 가격3,000
  • 페이지수44페이지
  • 등록일2010.01.15
  • 저작시기2009.4
  • 파일형식압축파일(zip)
  • 자료번호#574651
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니