반응형 Lecture23 Reversi 게임 제작하기 - 3 이제 컴퓨터가 돌을 놓기 위해서 게임트리를 작성하고 그에 따라서 돌을 놓는 로직이다. 이 부분의 로직은 매우 복잡하고, 알파-베타 가지치기를 효율적으로 사용하기 위해서 자기호출 함수를 사용치 않았다. #defineMINVAL (-1000) #defineMAXVAL (1000) #defineMAXDEPTH(20) unsigned GetOptimal(Gameboard &board, unsigned turn, unsigned maxdepth, unsigned method) { unsigned nodenum = 0; Gameboard boards[MAXDEPTH]; unsigned slot[MAXDEPTH]; unsigned optindex[MAXDEPTH]; int score[MAXDEPTH]; unsigne.. 2019. 12. 22. Reversi 게임 제작하기 - 2 오델로 게임 오델로(Othello) 게임은 바둑, 장기, 오목 등과 마찬가지로 유명한 보드 게임이다. 오델로 게임은 다른 말로 리버시(Reversi)라고도 불린다. 이 게임은 1800년대에 영국에서 리버시라는 이름으로 만들어졌고, 1970년대에 일본에서 리버시라는 게임이 존재하는지 모르고 세익스피어 작품의 오델로 이름을 따서 현대적 룰을 갖춘 게임이 만들어졌다. 오델로 게임의 규칙 오델로 게임을 가로 8칸, 세로 8칸의 정방형 사각형이 있는 게임판에서 게임을 한다. 오델로에는 총 64개의 돌이 있고, 이 돌은 한쪽은 하얀색, 한쪽은 검은색으로 이루어져 있다. 처음 시작하면 보드 중앙에 4개의 흑과 백돌을 번갈아 배치하게 된다. 돌을 놓을 수 있는 곳은 자신의 색 돌 사이에 적어도 1개 이상의 상대편 돌이.. 2019. 12. 19. Reversi 게임 제작하기 - 1 게임 트리 게임이론의 소개 게임이론(Game theory)은 자신의 이득을 극대화하기 위해서 수학적 분석 방법을 사용하는 기법이다. 게임이론은 경제학에서 많은 발전을 이루었고, 게임에서는 인공지능을 구현하기 위해서 사용한다. 게임이론을 알기 위해서는 몇가지 예를 통하여 이해하는 것이 좋다. 몬티홀 문제(Monty hall dilemma)는 잘못된 확률 상식을 발생시킬 수 있는 좋은 예이다. 몬티홀은 퀴즈에서 우승한 사람을 대상으로 상품을 고르도록 한다. 세개의 문이 있는데, 이 세개의 문중에 하나에는 비싼 스포츠 자동차와 다른 두개의 문 뒤에는 염소가 있다. 결국 우승자는 스포츠 자동차를 뽑기를 원한다. 단순하게 선택한 문을 열어서 상품을 확인한다면, 3개중에 하나에만 상품이 있기 때문에 확률은 \(\f.. 2019. 12. 19. Snake Bite 텍스트 게임 제작하기 - 2 스낵바이트 게임 소개 이번에 작성해볼 게임은 추억의 게임인 스낵바이트 게임이다. 과거 추억의 게임이지만, 스낵바이트 게임은 게임 프로그래밍을 처음 접하는 초급 프로그래머가 도전해보기에 적당한 소재인 듯 합니다. 스낵바이트 게임은 간단한 규칙(Rule)을 가지고 있다. 뱀(Snake)을 조절하여 화면상에 있는 사과를 많이 먹는 게임이다. 단 주의할 것은 뱀이 자신을 물거나 벽에 부딪쳐서는 안된다. 뱀은 계속 전진하며, 사용자는 키보드로 방향만 전환할 수 있다. 뱀은 시간이 지나거나 사과를 먹게되면 계속 길이가 길어지며 속도가 빨라지게 되어 게임의 난이도가 높아진다. 아래 그림과 같이 뱀이 돌아다닐 수 있는 사각형의 영역이 있다. 뱀은 @를 머리로 가지게 했고, 몸체는 채워진 사각형으로 그렸다. 사과는 ♡로.. 2019. 12. 11. Snake Bite 텍스트 게임 제작하기 - 1 게임을 제작하는 전체적인 구조는 대부분의 게임에서 비슷한 구조로 작성된다. 대부분의 게임은 사용자의 입력에 따라서 게임을 진행하며, 어떤 입력을 받았는가에 따라서 게임이 일찍 끝나기도, 또는 늦게 끝나기도 한다. 게임의 전체적인 진행을 순서도로 표시하면 대략 다음과 같이 구성될 수 있다. 게임이 시작하게 되면 게임초기화부에서는 게임을 진행하기 위한 여러가지 상태변수들을 초기화하게 된다. 모든 프로그램은 유한상태기계(Finite State Machine)으로 표현할 수 있는데, 게임도 예외일 수 없다. 게임초기화에서는 상태변수들을 초기화하는 것 이외에도 화면출력에 사용할 그래픽 자원들을 파일로부터 얻어오게 된다. 사용자 입력부는 키보드, 마우스, 조이스틱 등 게임에서 게임을 조작하기 위한 도구들로부터 데이.. 2019. 12. 10. 3. Unity3D에서 간단한 C# 스크립트 만들기 이번에는 간단한 C# 스크립트 예제를 통하여 Unity3D의 객체를 움직여보도록 하겠습니다. 우선 새로운 프로젝트를 만들도록 합니다. 새로운 프로젝트 이름은 SolarSystem이라고 하도록 하겠습니다. 새로운 Unity3D 프로젝트 패스는 중요하지 않습니다. 패키지 추가는 필요하지 않으므로 아무것도 선택하지 않습니다. (나중에 얼마든지 패키지는 추가할 수 있습니다. 아차하고 추가하지 않았다 해도, 언제든 추가할 수 있으니 걱정 안 하셔도 됩니다.) [Create] 버튼을 눌러서 프로젝트를 생성시키면 Unity3D 편집 화면으로 들어갑니다. 이제 새로운 스크립트를 추가하도록 합니다. 스크립트를 추가하기에 앞서서 폴더를 하나 생성토록 합니다. Project 창의 Assets 밑에 Scripts란 폴더를 생.. 2014. 4. 22. 이전 1 2 3 4 다음 728x90