본문 바로가기
엔트리/엔트리 중급

초간단 오목 만들기 (2차원 배열 데이터 활용)

by 할거없네 2020. 5. 9.

안녕하세요. 승승이입니다.

이번에는 오목 게임을 정말 간단하고 최소한? 의 코드로 만들어 봅니다.

2차원 배열을 활용하여 더욱 쉽고 간단한 오목게임을 만드는 방법을 소개합니다.

 

 

 

사용하는 오브젝트는 2개입니다.

하나는 현재 상태를 알려주는 문자이고, 두번째는 오목판과 돌을 나타내는 오브젝트입니다.

 

먼저 문자열을 코딩해봅니다.

 

 

상태와 턴에 따라서 차례와 기다림을 만든 상태입니다.

여기서 변수 하나로 통일해도 되는데 그냥 이해하기 쉽게 '상태'와 '턴'으로 2개로 했습니다.

상태가 0이면 바둑판을 만들고 있으며, 1이면 돌을 넣을 수 있는 ㅅ아태, 2이면 점수 계산중입니다.

3와 4가 되면 승리를 확인합니다.

 

 

 

다음은 바둑판과 바둑돌이 되는 오브젝트를 코딩합니다.

여기서 2차원 배열을 만들어 주어야 하는데요, '데이터 분석'에서 데이터 테이블를 하나 만들어 줍니다.

데이터의 테이블은 0으로 된 값으로 10x10의 2차원 배열입니다.

 

 

처음에는 10x10으로 복제를 합니다. 행과 열을 각각 1씩 더해주면서 복제하도록 되어 있습니다.

본체는 이것으로 코딩을 완료합니다.

 

다음은 복제된 오브젝트가 하는 역할입니다. 코딩이 길어보이지만 사실 간단합니다.

만약에 더 줄인다면 흑이냐 백이냐를 반으로 줄일 수 있지만 그냥 만들기 편하게 흐름대로 코딩하였습니다 ㅋㅋ

 

가장 먼저 하는 것은 자기 위치로 이동하는 것입니다.

복제될때 가져온 행과 열의 값에 따라서 이동을 하고, 복제가 모두 완료될때까지(상태=1) 기다립니다.

그 다음에는 게임이 가능한 상태로 판단하고 게임이 시작됩니다.

테이블값이 0이라면 비어있는 칸으로 바둑돌을 놓을 수 있습니다.

 

턴이 0이라면 백, 1이라면 흑의 차례입니다.

 

마우스에 닿은 오브젝트는 바둑판에 돌이 올라와 있는 모양으로 변합니다.

여기서 마우스를 클릭하면 돌은 올려지고 점수 계산을 시작합니다(상태=2).

상태가 2인 상태에서는 다른 바둑판들은 임시 정지하고 계산할때까지 기다립니다.

점수판단은 가로, 세로, 대각선1, 대각선2의 4번에 걸쳐서 계산합니다.

 

점수판단 함수는 좀 복잡해 보이지만 흑과 백으로 나눈 거라서 반쪽만 이해하셔도 됩니다.

초기 위치와 이동할 위치의 총 4개의 값을 받아서

10번에 걸쳐서 이동하면서 자신의 돌의 수를 구합니다.

만약 중간에 돌이 빠져있거나 상대의 돌이 있다면 그 값은 0으로 되어 처음부터 세도록 되어 있습니다.

만약 돌을 차례대로 구하다가 5점이 되는 것을 발견하면 게임이 누군가의 승리로 되면서 끝납니다.

 

흑과 백은 모양만 다를 뿐이지 규칙은 같기 때문에 거의 복붙의 형태로 코딩이 가능합니다.

좀더 코딩을 줄이고자 변수를 몇개 사용하면 흑과 백의 코딩은 하나로 합쳐서 만들 수도 있습니다.

 

 

 

 

 

 

 

코딩보기: 

 

www.naver.me/FOsuFu18

 

 

댓글