상상스(feat.장장스) c언어 오목 프로젝트! 렌주룰 (소스코드 파일) c language omok

C언어 오목(렌주룰)


오늘은 c언어로 만든 오목을 포스팅해보려고 합니다.

학교 프로젝트로 2인1조로 c언어로 프로그램을 만드는 것이였어요. 주제는 상관이 없어서 고민을 하다가 c언어로 오목을 만들어보기로 했어요!

첫 시작부터가 어렵더라구요. 알고리즘을 생각하는 것부터가 난관이였어요. 그래서 인터넷에서 배낄까? 생각도 해보긴 했는네 저희가 원하는 렌주룰을 만든 오목 프로그램은 없었어요. 그래도 일단 5개의 돌을 놓으면 이기는 오목 프로그램은 인터넷상에 돌아다니더라구요. (그것도 없었으면 시작이 너무 오래 걸렸을 것 같아요.)

 소스코드를 분석하고 이해하는데 엄청 시간을 쏟았던거 같아요. 프로그램을 이해하지 못한다면 저희가 원하는 규칙을 적용할 수가 없었거든요. 처음보는 헤더나 함수의 사용이 어려웠어요. 코드분석을 끝내고 새롭게 저희가 원하는 렌주를을 적용한 프로그램을 새로 짜봤어요.  오목을 c언어로 만들어 보려는 분들께 도움이 되었으면 하는 마음에 한번 올려봐요~








렌주룰이란?

오목은 상대보다 먼저 나란히 연속적으로 5개를 놓을 경우 승리하는 게임이죠. 너무나 단순한 룰이여서 먼저 두는 흑이 너무나 유리해요. 그래서 먼저 두는 흑돌에게 몇가지 제한을 두어서 백돌과 대등한 게임을 할 수 있도록 만든 것이 '렌주룰'이에요.
(렌주룰에도 조금 문제가 있어서 실제 공식 대회에서는 오프닝렌주를을 사용한답니다.)

규칙

 백돌은 아무런 제약이 없어요. 5개의 돌을 연속적으로 놓으면 승리를 합니다. 백돌은 6목도 가능해요. 흑돌은 3x3, 4x4, 6목 착수를 할 수가 없어요.



자, 실행화면을 보여드릴게요!

실행은 도스창으로 하구요. 첫 시작화면은 이렇습니다. 일단 상상스 with 장장스 함께 만든 오목프로그램은 렌주룰을 기반으로 하는 오목이에요.

처음에는 저희가 만든 오목룰을 설명해요. 읽어보시면 아시겠지만 흑돌의 6목금지인 규칙은 미처 적용하지 못했어요. 태어나서 처음으로 만들어보는 프로그램이라서 시간이 많이 빠듯했어요. (변명이야..)렌주룰 오목을 만들어 보려는 분이 계시다면 흑돌의 6목 금지 규칙을 적용해보세요!


실행 화면이에요. 첫 수는 렌주룰에 따라서 흑돌이 먼저 두게 됩니다.



 아래는 3x3, 4x4 착수 금지 화면이에요. 흑돌이 돌을 놓으려 할 때, 착수규칙 함수가 돌을 놓을 수 있는지 없는지를 판단해서 화면에 글을 나타내요!
3x3 착수 금지
4x4 착수 금지

착수 규칙의 원리를 설명하자면 착수하고자 하는 위치로 부터 돌이 3개가 혹은 4개가 연속되는 줄이 2개 이상이면 착수 금지하는 식의 원리에요. 자세한건 소스코드를 다운받아서 보시면 좋을 것 같아요.



이렇게 5개의 돌을 나란히 연속으로 두게 되면 승리하게 되요. 게임 끝나면 콘솔창에 다시하기를 이용해서 게임을 또 할 수 있어요!


이렇게 c언어를 사용해서 오목을 만들어봤는데요. 코딩 고수 분들이 보시기에는 미흡하지만 제게는 매우 심혈을 기울여 만든 것이랍니다! 한 10판정도 게임을 진행해 본 결과 문제점은 발견 못했어요. 혹시라도 문제점이 있다면.. 여러분이 고쳐주세요. 그럼 20000








소스코드는 아래에 있어용~















(블로거는 파일을 올릴수가 없네요.. 엉엉)



압축해제암호: zangzangs.blogspot.kr

Comments

  1. 이렇게 하는거야

    ReplyDelete
  2. 출석을.. 쿨럭쿨럭쿨럭.. 부.. 쿨럭.. 부르겠어요.. 쿨럭

    ReplyDelete
  3. 자넨 A일세.

    ReplyDelete
  4. 방향키 움직일때마다 돌지우는 함수에서 출력되는 거랑 겹쳐서 오목판이 이상하게 됩니다 어떡해하죠?

    ReplyDelete

Post a Comment

Popular Posts