c언어 승패판단 프로그램 작성하기

  안녕하세요..^^* 오늘은 재귀호출을 이용해서 간단한 승패판단 프로그램을 짜 보도록 하겠습니다. 여기서 규칙을 정해야 되겠죠.


  규칙 1 사과를 1개에서 3개를 제거할 수 있다. 무조건 제거해야 된다.

  규칙 2 사과가 0개가 되어서 돌려주면 지는 것이다.

 


  자 규칙 1과 2를 보고 여기서 보도록 하죠. 0이면 내가 사과를 0개를 가지고 있으니까. 안되는 것이죠. 그럼 사과를 4개를 가진다고 해 보겠습니다. 그렇다면 4개에서 1개를 남한테 주면 3개가 남죠. 그럼 다른 사람이 3개를 돌려주면 지고 2개를 남한테 주면 2개를 가진 사람이 2개를 줘 버리면 0개이고 3개를 다 줘버리면 1개가 남으니 상대가 1개를 돌려주면 그냥 지므로 무조건 집니다.

  그렇다면 5개는 어떨까요? 내가 일단 1개를 주면 4개겠죠? 그럼 상대는 1개를 주던 2개를 주던 3개를 주던 무조건 지는 게임입니다. 이 간단한 규칙의 게임을 한번 프로그래밍 해 보겠습니다.



  여기서 가장 핵심적인 부분은 재귀호출 부분 즉 win 함수의 정의부분인데요. 0일때는 무조건 지니까 false값을 리턴해야되겠죠. 그러므로 0 1일때는 1개를 주면 적은 1개를 2개일때도 1개를 돌려주면 상대방은 무조건 1개를 제거해야되므로 이기겠죠. 4일때를 봅시다. 내가 1개를 제거 했을때와 2개를 제거했을때 3개를 제거했을 때 적에게는 다 참을 즉 적에게 이길 수 있는 패만 주었죠? 그러니까 어느 하나는 지는 패를 줘야 합니다. 그래서 소스코드를 저렇게 코딩 했습니다.



  생각을 해 보면 간단한 소스이지만 처음 하시는 분들은 아주 생소한 소스코드가 될 수 있습니다. 기본을 튼튼히 하여도 많은 생각이 없다면 절대 프로그램은 쉽게 짤 수 없는 것이죠.^^* 프로그래밍 저도 배우면서 많이 어렵네요..ㅠㅠ 그럼 오늘은 여기서 마치도록 하겠습니다.^^*

댓글

Designed by JB FACTORY