C언어 2P 오목 소스 ( A+ 학점 받은 그 자료) 금수자리 완벽 구현
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

C언어 2P 오목 소스 ( A+ 학점 받은 그 자료) 금수자리 완벽 구현에 대한 보고서 자료입니다.

본문내용

BLACK;
//보드 0
dx = dy = BOARDSIZE/2; // 중앙 배치
gotoxy(BOARDSIZE-1, BOARDSIZE/2); //그림을 표현하기 위해서는 기본 좌표(x, y)를 (x*2, y)로 표현
// 그림으로 중앙으로 배치.
}
int ThreeCheck2(int ex, int ey, int dx, int dy, int flag)
{
int three, count;
int x, y;
int c;
int re;
three = 0;
count = 0;
re = Exchange(turn);
x = ex;
y = ey;
/*
while(1){
if( Wall(dx+x, dy+y) == 0 && board[dy+y][dx+x] == EMPTY ){
board[dy+y][dx+x] = turn;
if( ThreeCheck(-1, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(0, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(-1, 0, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(1, -1, dx+x, dy+y, &c) ) count++;
board[dy+y][dx+x] = EMPTY;
break;
}else if( (Wall(dx+x, dy+y) == 0 && (board[dy+y][dx+x] != EMPTY || board[dy+y][dx+x] != turn) ) || Wall(dx+x, dy+y) == 1 ) break;
else{
x += ex;
y += ey;
continue;
}
}
*/
while(1){
if( (Wall(dx+x, dy+y) == 0 && board[dy+y][dx+x] == turn) ){
x += ex;
y += ey;
continue;
}else if( Wall(dx+x, dy+y) == 1 || (Wall(dx+x, dy+y) == 0 && board[dx+x][dy+y] == re) ) break;
board[dy+y][dx+x] = turn;
if( ThreeCheck(-1, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(0, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(-1, 0, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(1, -1, dx+x, dy+y, &c) ) count++;
board[dy+y][dx+x] = EMPTY;
break;
}
if( count >= 2 ) three--;
if( three < 0 ) return 1;
count = 0;
/*
if( ex == -1 && ey == -1 ) gotoxy(1, 18);
if( ex == 0 && ey == -1 ) gotoxy(1, 19);
if( ex == -1 && ey == 0 ) gotoxy(1, 20);
if( ex == 1 && ey == -1 ) gotoxy(1, 21);
*/
ex *= -1;
ey *= -1;
x = ex;
y = ey;
/*
while(1){
if( Wall(dx+x, dy+y) == 0 && board[dy+y][dx+x] == EMPTY ){
board[dy+y][dx+x] = turn;
if( ThreeCheck(-1, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(0, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(-1, 0, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(1, -1, dx+x, dy+y, &c) ) count++;
board[dy+y][dx+x] = EMPTY;
break;
}else if( (Wall(dx+x, dy+y) == 0 && (board[dy+y][dx+x] != EMPTY || board[dy+y][dx+x] != turn) ) || Wall(dx+x, dy+y) == 1 ) break;
else{
x += ex;
y += ey;
continue;
}
}
*/
while(1){
if( (Wall(dx+x, dy+y) == 0 && board[dy+y][dx+x] == turn) ){
x += ex;
y += ey;
continue;
}else if( Wall(dx+x, dy+y) == 1 || (Wall(dx+x, dy+y) == 0 && board[dx+x][dy+y] == re) ) break;
board[dy+y][dx+x] = turn;
if( ThreeCheck(-1, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(0, -1, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(-1, 0, dx+x, dy+y, &c) ) count++;
if( ThreeCheck(1, -1, dx+x, dy+y, &c) ) count++;
board[dy+y][dx+x] = EMPTY;
break;
}
if( count >= 2 )three--;
//printf(\"%d\", count);
if( three < 0 ) return 1;
return 0;
}
int ThreeCheck(int ex, int ey, int dx, int dy, int *flag) // 삼삼 금수 검사.
{
int x, y;
int empty, re_empty;
int reverse;
int fx, fy; // 첫번째 x, y 좌표; // ex, ey만큼 계속 이동해서 turn의 첫번째 자리
int lx, ly; // 마지막 x, y 좌표; // ex, ey의 반대 방향만큼 계속 이동해서 turn의 마지막 자리
int wall, re_wall; // wall는 두 가지 의미를 포함한다. 하나는 말 그대로 벽과 또 하나는 적의 돌.ex, ey방향은 wall이고, ex, ey의 반대 방향은 reverse wall인 re_wall이다.
int count;
int fake, lfake; // fakethree에 관한 변수. 첫번째는 ex,ey방향, 두번

키워드

2P,   금수,   A+,   학점,   C언어,   오목,   C언어,오목,A+
  • 가격3,000
  • 페이지수16페이지
  • 등록일2016.02.08
  • 저작시기2013.12
  • 파일형식한글(hwp)
  • 자료번호#994060
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니