우선 작업을 하면서 이번에는 저의 부족한 기술을 알지만, 구현하기 쉬운 방식이 아닌 머리속의 설계를 좀 따르고, 논리적으로 쉬울 것 같은 방식으로 프로그램 작성의 방향을 계획한 후 그대로 프로젝트를 끝내보기로 마음을 먹었습니다.


일례로, 미리 9*9의 판을 작성을 해 놓고 해당 TextBox의 이름을 관리하면서 이름에 직접 하드코딩 식으로 할 수도 있지만, 이번에는 2차원 배열을 통해서  TextBox와 그 안의 값을 별도로 관리를 하고, TextBox도 미리 디자인 되어있는것이 아닌 코드가 수행되면서 그리도록 처리를 하였습니다.


또한 파일은 우선 최대한 쉽게 숫자를 띄어쓰기와 개행문자로 구분하여 9*9의 값을 Text파일을 통해서 입력받으며 그 값을 가지고 간단한 검사를 통해 TextBox에 값을 입력 해 줍니다. 1~9의 경우 문제에 표시된 고정된 숫자이며, 0의 경우는 문제에서의 빈칸으로 사용자가 입력을 할 수 있도록 값이 0인 경우에는 해당 칸에 0을 쓰지 않도록 했습니다.



9*9 그리드를 나눠 TextBox를 그리는 것은 쉬웠지만. 뭔가 라인이 없고 밋밋했습니다. 각 칸마다의 구분은 어느정도 되었지만 보다 확실한 구분이 필요한 3*3 단위로 보기엔 불편함이 있었습니다.




<사진1> 수정이전의 첫 9*9 화면 디자인








그래서 3,6,번째를 구분하여 가운데 코드를 넣고, 빈 행과 열의 정의를 추가하여 작업을 하니 아래와 같은 가 나왔습니다.



<사진 2> 수정(3*3구분) 이후 첫 화면 디자인


문제가 다분히 있어보이는 이 문제를 보자마자뭔가 이상한 계단같은 느낌이 들면서, 2중 for문을 사용하면서 중간에 공백을 위해 보정하며 다하는 값을 다음줄로 넘어갔을 때 초기화를 하지 않아서 저런 문제가 발생했다고 바로 판단할 수 있었습니다.




그래서 보정값을 매 첫 포문이 수행되면 그 안의 2번째 포문이 수행되기 전에 열 보정값을 초기화(0으로 만듬)하였습니다.



<사진3> 보정 이후 3*3이 더 잘보이게 된 보드



처음에는 3,6번째에만 구분선을 추가 할 생각으로 그래서 if연산시 0번은 제외하는 조건을 넣었지만, 정의를 수정하고 UI도 조금 다듬어서 그냥 0번째 9번째인 테두리도 보일 수 있도록 수정하였습니다.




<사진 4> 수정 끝 - UI작업 1차 완료




별로 어려운 것도 아니고 할 수 있지만 그냥 과정을 보니 재미가 있어서 남겨봅니다.





P.S.

깡통 UI만 보다보니 허전하여 문제를 로드한 화면을 아래에 붙입니다.








<사진 5> 문제 불러온 화면




+ Recent posts