<div>#include <stdio.h></div> <div>#include <cs50.h></div> <div>#include <string.h></div> <div><br></div> <div>void draw(int get[]);</div> <div>bool indexOfRight(int index, int array[]);</div> <div>bool indexOfLeft(int index, int array[]);</div> <div>bool indexOfMid(int index, int array[]);</div> <div>void move(int number, int index[]);</div> <div>bool check(int array[]);</div> <div><br></div> <div><br></div> <div><br></div> <div>일단 제가 그 그림맞추기게임같은거있잖아요.. 예를들어 판이있으면</div> <div><br></div> <div>1 3 2</div> <div>4 7 6</div> <div>5 8 </div> <div><br></div> <div>이렇게있으면 빈칸으로 숫자를 한번에 하나씩 움직여서 </div> <div><br></div> <div>1 2 3</div> <div>4 5 6</div> <div>7 8</div> <div><br></div> <div>이렇게 만들면 이기는 게임을 만들어보려고 계속 하고있는데요... </div> <div><br></div> <div>대충 알고리등ㅁ을 어떻게 짰냐면요 </div> <div><br></div> <div>index[]라는 array를 만들어서 </div> <div>value를 입력하면 몇번째 index에 있는지 알려주게 지정했어요. </div> <div><br></div> <div>예를 들면 </div> <div>1 2 3</div> <div>4 5 6</div> <div>7 8 이렇게 있으면 </div> <div><br></div> <div>index[1] == 0; </div> <div>index[7] == 6;</div> <div>이렇게요. </div> <div><br></div> <div>그다음에</div> <div>매 턴마다 </div> <div>판을 프린트해주고 그다음에 뭔 숫자를 옮기고 싶냐고 물어봤어요 . </div> <div>그리고 그 숫자가 빈칸옆에 있는지 체크하고 </div> <div>빈칸옆에있다면 빈칸의 index포인트랑 숫자의 index포인트를 바꿔치기했어요. move function에서요. </div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">근데 이게 되게 이상한게 </span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">예를들어 (빈칸을 0이라 할께요)</span></div> <div><span style="font-size:9pt;">1 2 3</span></div> <div><span style="font-size:9pt;">4 5 6</span></div> <div><span style="font-size:9pt;">7 8 0 이렇게 있다면 </span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">6을 입력하면 </span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">1 2 3 </span></div> <div><span style="font-size:9pt;">4 5 0</span></div> <div><span style="font-size:9pt;">7 8 6 이렇게 바로 바뀝니다</span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;">근데 여기서 5를 입력하면 </span></div> <div><span style="font-size:9pt;"><br></span></div> <div> <div style="font-size:12px;"><span style="font-size:9pt;">1 2 3 </span></div> <div style="font-size:12px;"><span style="font-size:9pt;">4 5 0</span></div> <div style="font-size:12px;"><span style="font-size:9pt;">7 8 6 이렇게 그대로 있어요. </span></div></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"> <div style="font-size:12px;"><span style="font-size:9pt;">1 2 3</span></div> <div style="font-size:12px;"><span style="font-size:9pt;">4 5 6</span></div> <div style="font-size:12px;"><span style="font-size:9pt;">7 8 0 여기서 8을 입력해도</span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"> <div style="font-size:12px;"><span style="font-size:9pt;">1 2 3</span></div> <div style="font-size:12px;"><span style="font-size:9pt;">4 5 6</span></div> <div style="font-size:12px;"><span style="font-size:9pt;">7 8 0 이렇게 그대로 있고요. </span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"><span style="font-size:9pt;">consistent 하게 이상하다면 첨부터 다 뜯어고쳐보겠는데 </span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"><span style="font-size:9pt;">세로로는 잘 바뀌는데 가로로는 안바뀌니 미치겠네요.. </span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"><span style="font-size:9pt;">몇시간째 혼자 끙끙대다가 올려봐요.. </span></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;"><span style="font-size:9pt;"> </span><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201704/149152222896b488734d7b4b959dbb68af3d8a1b48__mn651441__w670__h792__f46957__Ym201704.png" width="670" height="792" alt="스크린샷 2017-04-06 오후 7.43.33.png" style="border:none;" filesize="46957"></div><br></div></div></div> <div style="font-size:12px;"><span style="font-size:9pt;"><br></span></div> <div style="font-size:12px;">중간중간에 printf넣어서 체크해 봤는데요</div> <div style="font-size:12px;"><br></div> <div style="font-size:12px;">이렇게 1을 움직이려할때는 인덱스가 move funciton에선 바뀌었다가 다시 돌아와요 draw function이 실행될때는.</div> <div style="font-size:12px;">근데 3을 움직일때에는 인덱스가 move function에서 바뀌고 draw function에서도 그대로있어요.. </div> <div style="font-size:12px;">어떻게된거죠 ㅠㅠ </div> <div><br></div> <div><br></div> <div>int main(void){</div> <div> int index[9] = {8, 7, 6, 5, 4, 3, 2, 1, 0};</div> <div> </div> <div> while(!check(index)){</div> <div> draw(index);</div> <div> printf("What do you wanna move?");</div> <div> int number = get_int();</div> <div> move(number, index);</div> <div> }</div> <div>}</div> <div><br></div> <div>// 판을 시작할때마다 프린트해주는 function</div> <div>void draw(int index[]){</div> <div> </div> <div> int gridPlane[9];</div> <div> for(int n=0; n<9; n++){</div> <div> gridPlane[index[n]] = n;</div> <div> }</div> <div> for(int i=0; i<3; i++){</div> <div> for(int j=0; j<3; j++){</div> <div> printf("%i ",gridPlane[j+(i*3)]);</div> <div> }</div> <div> printf("\n");</div> <div> }</div> <div>}</div> <div><br></div> <div><br></div> <div>// 판이 있으면 왼쪽 3개가 빈 공간 근처인지 체크하는 펑션</div> <div>bool indexOfLeft(int index, int array[]){</div> <div> if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 ==array[0]){</div> <div> return true;</div> <div> }</div> <div> else</div> <div> return false;</div> <div>}</div> <div><br></div> <div>// 올느쪽 3개가 빈 공간 근처인지 체크하는 펑션</div> <div>bool indexOfRight(int index, int array[]){</div> <div> if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 == array[0]){</div> <div> return true;</div> <div> }</div> <div> else</div> <div> return false;</div> <div>}</div> <div><br></div> <div>// 중간 3개가 빈공간 근처인지 체크하는 펑션</div> <div>bool indexOfMid(int index, int array[]){</div> <div> if(array[index]-1 == array[0] || array[index]+3==array[0] || array[index]-3 == array[0] || array[index]+1 == array[0])</div> <div> return true;</div> <div> else</div> <div> return false;</div> <div>}</div> <div><br></div> <div>// 빈 공간이랑 숫자랑 자리 바꿔치기한느 펑션</div> <div><br></div> <div>void move(int number, int index[]){</div> <div> if(index[number] == 0 || index[number] == 3 || index[number] == 6)</div> <div> {</div> <div> if(indexOfLeft(number, index)){</div> <div> int temp = index[number];</div> <div> index[number] = index[0];</div> <div> index[0] = temp;</div> <div> }</div> <div> else</div> <div> printf("you can't do that \n");</div> <div> }</div> <div> </div> <div> if(index[number] == 1 || index[number] == 4 || index[number] == 7)</div> <div> {</div> <div> if(indexOfMid(number,index)){</div> <div> int temp = index[number];</div> <div> index[number] = index[0];</div> <div> index[0] = temp;</div> <div> </div> <div> printf("%i index[0] in move \n", index[0]);</div> <div> printf("%i index[1] in move \n", index[1]);</div> <div> }</div> <div> else</div> <div> printf("you can't do that\n");</div> <div> }</div> <div> </div> <div> if(index[number] == 2 || index[number] == 5 || index[number] == 8)</div> <div> {</div> <div> if(indexOfMid(number,index)){</div> <div> int temp = index[number];</div> <div> index[number] = index[0];</div> <div> index[0] = temp;</div> <div> }</div> <div> else</div> <div> printf("you can't do that\n");</div> <div> }</div> <div>}</div> <div><br></div> <div><br></div> <div>// order가 다 맞는지 체크하는 펑션</div> <div><br></div> <div>bool check(int array[]){</div> <div> for(int i=0; i<8; i++){</div> <div> if(array[i] != i+1){</div> <div> return false;</div> <div> }</div> <div> }</div> <div> return true;</div> <div>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.