~cpp include <iostream.h> #include <conio.h> int omok_array[19][19]={0,}; void omok_display(); int omok_check(int, int); int main() { int b_and_w=0; int question_x, question_y; cout << "오목을 시작하겠습니다. "; omok_display(); while(1) { b_and_w++; if (b_and_w%2 == 1) cout << "백 돌의 좌표를 입력하시오(x y) ->"; else cout << "흑 돌의 좌표를 입력하시오(x y) ->"; cin >> question_y >> question_x; if ( omok_array[question_x][question_y] != 0) { cout << "다시 입력하시오 \n"; b_and_w--; continue; } else omok_array[question_x][question_y] = b_and_w%2+1; omok_display(); if (omok_check(question_x, question_y) == 2) { cout << "백 돌이 승리했습니다.\n"; break; } else if (omok_check(question_x, question_y) == 1) { cout << "흑 돌이 승리했습니다.\n"; break; } } // getch(); return 0; } void omok_display() { // clrscr (); system("cls"); for (int i = 0 ; i <= 18 ; i++) { for (int j = 0 ; j <= 18 ; j++) cout << omok_array[i][j]; cout << " " << i; cout << "\n"; } } int omok_check(int x, int y) { int i,check_x=0,check_y=0,check_cl=0,check_cr=0,che=0,temp=omok_array[x][y]; for (i = -5 ; i <= 5 ; i++) // 가로 { if ( omok_array[x-i][y] == temp) { check_x++; if ( check_x == 5) break; } else check_x = 0; } if ( check_x == 5 ) { if ( omok_array[x-(i+1)][y] != temp ) return temp; } for (i = -5 ; i <= 5 ; i++) // 세로 { if ( omok_array[x][y-i] == temp) { check_y++; if ( check_y == 5) break; } else check_x = 0; } if ( check_y == 5 ) { if ( omok_array[x][y-(i+1)] != temp ) return temp; } for (i = -5 ; i <= 5 ; i++) // 왼쪽 대각선 { if ( omok_array[x-i][y-i] == temp) { check_cl++; if ( check_cl == 5) break; } else check_cl = 0; } if ( check_cl == 5 ) { if ( omok_array[x-(i+1)][y-(i+1)] != temp ) return temp; } for (i = -5 ; i <= 5 ; i++) // 오른쪽 대각선 { if ( omok_array[x-i][y+i] == temp) { check_cr++; if ( check_cr == 5) break; } else check_cr = 0; } if ( check_cr == 5 ) { if ( omok_array[x-(i+1)][y+(i+1)] != temp ) return temp; } return 0; }