// 가로줄 검사 함수
int horizontal_check(char cStone, int panIdx_r, int panIdx_c, char omok_pan[][ARR_SIZE_C])
{
int winCnt = 0, pIdx_c, mIdx_c;
pIdx_c = mIdx_c = panIdx_c; // 배열의 위치값을 저장
while (omok_pan[panIdx_r][pIdx_c--] == cStone) // 가로줄의 왼쪽 검사
{
winCnt++; // 연속된 돌의 카운터 증가
}
while (omok_pan[panIdx_r][++mIdx_c] == cStone) // 가로줄의 오른쪽 검사
{
winCnt++; // 연속된 돌의 카운터 증가
}
//printf("가로줄 검사 : %d\n", winCnt);
return winCnt;
}
체크를 나는 하나씩 다 검사해야 하는지 알았는데 아니더라고 이렇게 쉬운 방법이 있다니..역시 생각을 해야됨..
대각선은? 하고 봤더니 가로줄 검사 함수구나
씨니까인정합니다
기준 위치 체크를 하지 않고 ( --pldc_c ) 1 부터 세는게 더 융통성 있을텐데?
--pIdx_c
기준 위치 체크안하면 카운터 4로 종료조건 하면 되려나?
아니 1부터 카운팅하니까 종료조건은 같지.
대신, 빈 자리에 상대나 내가 뒀을때 상황이 어떻게 되는지 미리 채점하는 용도로 쓸 수 있잖아.
어차피 누군가가 뒀을때 오목인지 따진 다면 굳이 놓은 자리의 돌을 셀 필요가 없다는 이야길 하는거야.
아하 오키오키
땡큐 코세형
앙~ 그렇게 하면 함수가 더 융통성 있고 가벼워지지유~
만약 몇 수 두어보고 평가한다면, 저 함수 앞이나 뒤에서 돌을 놓는 함수를 넣어주면 되는거구. 원래대로라면 항상 미리 두어야겠지만 말이지. 여러모로 융통성이 생기지.
요약하면 미리 두지 않고 둔 걸로 가정한 평가를 할 수 있다. 비교문이 한 번 준다 정도. 저것도 방향 dx, dy 값을 탬플릿의 인자로 주면 가로 전용 함수가 아니게 일반화 할 수 있음.