기획자 본인만큼 잡다한 블로그

greentec.egloos.com

포토로그


통계 위젯 (블랙)

010
65
90515

flag counter

Flag Counter


결! 합! 게임의 수학 프로그래밍

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도 포함된다. 모두 다르거나 / 모두 같거나인 경우 숫자를 나열하면 다음과 같기 때문이다.


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


덧글

  • 너구리03 2014/06/26 23:22 # 삭제 답글

    게임 정말 재밌게 해서.. 원작자분 찾아왔어요ㅋㅋ 고맙습니다!
  • 기획자 2014/07/01 15:16 #

    오... 감사합니다! 계속 재밌는 게임 만들도록 노력하겠습니다 ㅎㅎ
  • 해보고싶어요 2015/08/19 15:36 # 삭제 답글

    우왕... 이렇게 만들어 보고 싶은데..ㅠㅠ 저런 코딩들은 어디가면 배울수 있나요?? 그리고 프로그램은 어떤걸..ㅜㅜㅜ
  • 기획자 2015/08/19 17:40 #

    안녕하세요. 저는 컴공과 출신은 아니고 코딩은 독학으로 배웠습니다. 책을 하나 사서 코드를 쭉 따라쳤더니 그때부터 조금씩 원하는 것들을 만들 수 있었습니다. 프로그램은 무료 소프트웨어인 FlashDevelop을 사용했습니다. (http://www.flashdevelop.org/) 일단 처음이시라면 생활코딩이나 codecademy 같은 곳에서 기본 언어 강의들을 들어보시는 것을 추천합니다.
  • 해보고싶어요 2015/08/19 19:53 # 삭제

    감사합니다. ㅠㅠ 혹시 독학하신 책이 어떤건지 여쭤봐도 될까요?! 저도 당장 서점으로 달려가보겠습니당!
  • 기획자 2015/08/19 23:59 #

  • 파란유리상자 2015/09/09 10:26 # 삭제 답글

    아 게임링크에 들어갔는데 게임이 안나오네요ㅠㅠ
    지난번에는 잘 되던데ㅠㅠ
  • 파란유리상자 2015/09/09 10:26 # 삭제 답글

    아 게임링크에 들어갔는데 게임이 안나오네요ㅠㅠ
    지난번에는 잘 되던데ㅠㅠ
  • 기획자 2015/09/10 10:28 #

    wonderfl에 문제가 있는 것 같아서 다시 빌드했습니다.
    이제 잘 되실 것 같은데, 혹시 또 안되면 말씀주세요. 감사합니다.
  • 파란유리상자 2015/09/15 19:01 # 삭제 답글

    다시 들어가봤는데 안되네요ㅠㅠ
  • 기획자 2015/09/16 09:04 #

    음, 저는 크롬에서 잘 되는데.. 아마 플래시 플레이어의 문제 같네요.
    크롬을 사용하신다면 주소창에 chrome://plugins/ 을 입력하시고
    Adobe Flash Player - 버전: 18.0.0.232 를 "사용 중지"를 누르셨다가 다시 "사용"을 눌러보시겠어요? 그리고 "항상 실행하도록 허용"이 체크 상태여야 합니다.
  • 미리 2015/12/29 12:29 # 삭제 답글

    만들어진 결합게임 중에 이게 최고예요..
    음.. 근데 폰에서는 속도도 느리고 분명 눌렀는대도 잘 안 눌려지고 그러네요.
    아마 익스플로러가 플레쉬를 매끄럽게 지원하지 않기때문에 그런거 같습니다.
    가끔 링크 건 사이트에서 이 게임이 몇일동안 로딩이 안되는 경우도 있어요
    그래서 부탁을 좀 할수 있을까해서 글남깁니다. 죄송해요.
    이 게임을 apk어플로 만들어주실수 있으신가해서요.
    아 그리고 한게임 끝내는데 몇초가 걸리는지 지금까지 몇번 틀렸는지 표시되면 좋을 것같아요.
  • 기획자 2016/01/15 09:14 #

    제가 최근에 못 들어오느라 남겨주신 글을 지금 봤네요.
    말씀주신대로 apk 로 만드는 방안을 고려해 보겠습니다.
    그리고 한 게임 끝내는 데 걸리는 시간, 몇 번 틀렸는지 등은 통계 같은 장치를 같이 넣을 수 있겠네요. 이건 apk 보다 시간이 적게 걸리니, 주말 내에 작업해보도록 하겠습니다.
    관심가져주시고 댓글 달아주셔서 감사합니다!
  • 기획자 2016/01/17 22:49 #

    http://wonderfl.net/c/jler
    원래 링크에 한 게임 동안 소요되고 있는 시간, 지금까지 몇 번 틀렸는지 표시를 추가했습니다.
    더 자세한 통계는 별도 메뉴가 필요할 것 같네요.
  • 옐라 2016/01/17 21:00 # 삭제 답글

    정말 잘만드셨어요.. 존경합니다
    재미있게 하고갑니다~
  • 옐라 2016/01/17 21:00 # 삭제 답글

    정말 잘만드셨어요.. 존경합니다
    재미있게 하고갑니다~
  • 옐라 2016/01/17 21:00 # 삭제 답글

    정말 잘만드셨어요.. 존경합니다
    재미있게 하고갑니다~
  • 기획자 2016/01/17 22:50 #

    댓글 감사드립니다. ㅎㅎ
  • 히파티아 2017/04/17 10:19 # 삭제 답글

    수학교사입니다. 예전에 수업에서 이 플래시를 사용한 적이 있었는데 학생들 반응이 좋았답니다. 다시 사용해보려고 하니 링크를 따라가도 잘 안되네요.. 어떻게 해야할까요?^^;;
  • 기획자 2017/04/17 23:56 #

    안녕하세요! 현재 그 사이트 (wonderfl.net) 가 2017년 3월 31일 부로 문을 닫아서 실행이 안되실 것 같네요. http://www.fastswf.com/UmXMQhI 이곳에 올려두었는데, 혹시 안되시면 말씀해주세요!
  • 파란유리상자 2017/05/15 10:26 # 삭제 답글

    작년에 이어서 너무나 잘쓰고 있어요!! 감사합니다!!
  • ㅇㅇ 2019/08/28 11:39 # 삭제 답글

    종종 생각나서 하는데 지금까지 잘 사용할 수 있게 해주셔서 감사합니다.
댓글 입력 영역

애드센스