틱택토 게임만들기

김치헌·2024년 1월 2일
0

TIL

목록 보기
9/38

우선 과제에 주어진 표시화면을 나타내는 방법을 고민하다 for문을 중첩하여 사용하여 구성하였다.

문제는 플레이어가 숫자를 입력하면 숫자가 O,X로 바뀌어야 되는데
for문을 이용하여 작성하니 i,j값을 계산하는것이 생각보다 복잡하였다.
개인프로젝트 제출일이 이번주 금요일인데 강의 과제에 너무 시간을 많이 쓰게되면 개인프로젝트에 필요한 시간을 확보하지 못할 것 같아서 일단은 게임이 동작하게 끔만 작성하는 방향으로 진행하였다.

과제 해결 방법

Stage매서드에 배열을 String [] Line1~9 = new string[17] 으로 생성하여
LINE2 (2,3) (2,9) (2,15) 에는 num = i/6+1 값을 입력하여 주었다.
LINE5 (5,3) (5,9) (5,15) 에는 num = i/6+4 값을 입력하여 주었다.
LINE8 (8,3) (8,9) (8,15) 에는 num = i/6+7 값을 입력하여 주었다.

main 함수에서
int Input = int.Parse(Console.ReadLine()); 으로 플레이어에게 1~9까지의 숫자를 받고
입력시마다 Count++을 사용하여 Count가 짝수일때 플레이어1의 턴, 홀수일때 플레이어2의 턴으로 입력값을 choiceNumber[9]에 "O" "X" 로 저장하였다.

Stage매서드에서는 choiceNumber를 확인하여 OX가 아닌경우는 num을 표시하고 choiceNumber가 OX로 입력된 값은 OX로 표시되게 하였다.

매 선택시마다 tryNum++ 하여 tryNum이 9가 되거나 빙고가 달성되는 경우 게임이 종료되게 하였다.

빙고를 어떻게 간단하게 표현할 수 있을까 고민하다 어차피 경우의 수도 8개 밖에 안되는데 그냥 8개 전부 작성하자.....하여 가로, 세로, 대각선 빙고가 완성되는 경우 gameEnd매서드에서 true가 출력되게 하여 "게임종료" 를 출력하고 while함수를 break하였다.

개선해야 할 점 (1/5 개인프로젝트 제출 후 고민해보자)

Stage매서드가 너무 길어서 가독성이 떨어지므로 쉽게 표현 할 수 있는점을 찾아본다.
=> console.setcursorposition 으로 좌표를 설정하여 입력하면 " "로 빈칸을 채우지 않아도 원하는 위치에 맵을 표시할 수 있다!
빙고를 확인 할 수있는 알고리즘을 고민해 본다.
Input을 tryParse로 받지 않아 int값이 아닌 값이 들어오면 에러가 발생한다.
플레이어1, 2의 승리여부를 확인할 수 없다. gameEnd매서드를 bool이 아닌 int리턴으로 구성한다.

profile
초보개발자

1개의 댓글

comment-user-thumbnail
2024년 1월 5일

미니프로젝트 결과물의 서면 피드백이 나왔습니다. oh모르겠조 노션에 피드백 내용을 올렸으니 확인 부탁드립니다. :)

답글 달기