덧글수23
tvN에서 방영하는 예능 프로 <더 지니어스>가 재미있어서 결! 합! 게임을 만들어보기로 했다. 제작은 늘 하는 것처럼 플래시로 진행했다.
제작 시간은 얼마 안 걸렸지만 그 전에 고민하는 시간이 좀 걸렸는데, 별 것은 아니었고 게임에 쓰이는 각 카드의 도형종류, 도형색, 배경색을 프로그램 내에서 어떤 데이터 형태로 저장할 것인가였다. 결! 합! 게임에서는 하나의 카드가 배경색은 검은색-회색-흰색의 3가지, 도형색은 빨간색-노란색-파란색의 3가지, 도형종류는 원-삼각형-사각형의 3가지 중 하나로 선택되어, 총 나올 수 있는 경우의 수는 27가지가 된다.
그러므로 카드 1장은 0~26 사이의 랜덤한 숫자 하나로 표현할 수 있다. 그리고 그 숫자들을 중복 없이 9개 뽑으면, 게임 판을 만들 수 있다. 즉 아래와 같은 배열은 하나의 게임 판이 된다.
[10,7,23,24,21,20,3,17,12]
이것을 그림으로 옮기면 아래와 같다.

맨 왼쪽 위의 10을 가지고, 왜 이렇게 되는지 분석해 보자. 10을 3진수로 바꾸면 101이 된다. 1*9 + 0*3 + 1 = 10인 것이다. 그럼 맨 앞자리(9의 자리)의 1은 도형 종류를 나타내는데, 0은 사각형, 1은 원, 2는 삼각형으로 프로그램 내부에서 정의했으므로 도형 종류는 원이 된다. 두번째 자리(3의 자리)의 0은 도형 색깔을 나타내는데, 0은 빨간색, 1은 노란색, 2는 파란색으로 정의했으므로 빨간색이 된다. 마지막 자리(1의 자리)의 1은 배경색을 나타내는데, 0은 검은색, 1은 회색, 2는 하얀색으로 정의했으므로 회색이 된다. 이처럼 각 카드에 0~26까지의 랜덤한 숫자를 주고, 그 숫자를 풀어서 카드를 나타낸다. 물론 0~2까지의 숫자 27개를 세 개씩 묶어서 카드를 정의해도 상관없다.

그리고 가장 중요한 부분은 합!을 체크하는 것이다. 이것은 생각보다 간단하게 해결되었는데, 예를 들어 위 그림에서는 5, 7, 9가 합이다. 결! 합! 게임에서 합을 찾는 방법은 배경색이 모두 다르거나 모두 같거나, 도형색이 모두 다르거나 모두 같거나, 도형종류가 모두 다르거나 모두 같아야 한다. 5, 7, 9번의 카드 숫자를 이진수로 나타내면 다음과 같다.


뭔가 규칙성이 보인다. 각 자리수를 합쳐보면 이 규칙성이 더 분명하게 드러난다.

0 또는 3. 그리고 6도 포함된다. 모두 다르거나 / 모두 같거나인 경우 숫자를 나열하면 다음과 같기 때문이다.

꽤 재미있는 작업이었다. 아래에 게임을 직접 올려놓는다.
최근 덧글