데이터 구조 과정 설계 - 오목

11410 단어 데이터 구조
이 프로 그래 밍 의 임 무 는 오목 을 모 의 실현 하 는 것 이다. 오목 게임 인 이상 먼저 게임 인터페이스 가 필요 하고 또 하나의 바둑판 이 필요 하 다. 구체 적 인 절 차 는 다음 과 같다.
1. 먼저 게임 인 터 페 이 스 를 설계 하고 위 에 옵션 이 있어 서로 다른 기능 을 제공한다.예 를 들 어 게임 시작, 게임 종료 등 이다.
2. 2 차원 배열 로 바둑판 을 그 려 내 고 바둑판 의 상 태 를 계속 기록 하고 업데이트 한다.예 를 들 어 W [19] [19] 로 바둑판 을 표시 한다. 만약 에 W [i] [j] = 0 은 위치 (i, j) 에 자식 이 없다 는 것 을 나타 내 고 W [i] [j] = 1 은 이 위치 에 있 는 것 이 흑점 이 고 W [i] [j] = - 1 은 이 위치 에 있 는 것 이 백자 라 는 것 을 나타 낸다.
3. 키보드 로 입력 한 x, y 바둑판 의 가로 세로 좌 표를 실현 하여 바둑돌 의 타 점 을 지정 합 니 다.
4. 승부 메커니즘 이 있어 서 흑 방 이 이 기 는 지 백 방 이 이 기 는 지 판단 할 수 있 고 이번 게임 은 끝 납 니 다.
이번 게임 이 끝 난 후에 이어서 한 판 더 할 수 있다.
#include
#include
#include
#include
using namespace std;
int x,y,Step=0;
bool flag=0;//0     ,1     
char Switch;
char wmap[20][20][3]={
 {"┌","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┬","┐"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"├","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┼","┤"},
 {"└","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┴","┘"}};
char copymap[20][20][2];
int Showboard(),Play(),Interface(),Initboard(),Judgewin(),CopyB();
bool Existed(),Overflow();
//        
int Interface()
{
    char a;//          
    cout << "


"; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << " " ; cout << " ~~ 1: ~~" << endl; cout << " " ; cout << " ~~ 2: ~~" << endl; cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl; cout << "
:"; cin >> a; if(a=='2') { cout << "

"; cout << " !"; getch();// , return 0; } if(a=='1') Play(); return 0; } // int Initboard() { Step=0; for(int i=0;i<20;i++) for(int j=0;j<20;j++) { wmap[i][j][0]=copymap[i][j][0]; wmap[i][j][1]=copymap[i][j][1]; } return 0; } // , , CopyB() int CopyB() { for(int i=0;i<20;i++) for(int j=0;j<20;j++) { copymap[i][j][0]=wmap[i][j][0]; copymap[i][j][1]=wmap[i][j][1]; } return 0; } // int Judgewin() { int cx,cy,dx,dy; char a0=-95; char a1=-16; if(flag==0) { a1=-15; } cx=x;cy=y;dx=x;dy=y; // while(wmap[cx][cy][0]==a0&&wmap[cx][cy][1]==a1) { cx--;cy--; if(cx<0||cy<0) break; } // while(wmap[dx][dy][0]==a0&&wmap[dx][dy][1]==a1) { dx++;dy++; if(dx>15||dy>15) break; } if(dx>=(cx+6)||dy>=(cy+6)) return 1; cx=x;cy=y;dx=x;dy=y; // while(wmap[cx][cy][0]==a0&&wmap[cx][cy][1]==a1) { cx--; if(cx<0) break; } // while(wmap[dx][dy][0]==a0&&wmap[dx][dy][1]==a1) { dx++; if(dx>15) break; } if(dx>=(cx+6)) return 1; cx=x;cy=y;dx=x;dy=y; // while(wmap[cx][cy][0]==a0&&wmap[cx][cy][1]==a1) { cy--; if(cy<0) break; } // while(wmap[dx][dy][0]==a0&&wmap[dx][dy][1]==a1) { dy++; if(dy>15) break; } if(dy>=(cy+6)) return 1; cx=x;cy=y;dx=x;dy=y; // while(wmap[cx][cy][0]==a0&&wmap[cx][cy][1]==a1) { cx++;cy--; if(cx>15||cy<0) break; } // while(wmap[dx][dy][0]==a0&&wmap[dx][dy][1]==a1) { dx--;dy++; if(dx<0||dy>15) break; } if(cx>=(dx+6)||dy>=(cy+6)) return 1; return 0; } // int Showboard() { system("CLS");// , cout << " "; for(int s=1;s<=20;s++) { if(s>=10) cout << s<< ""; else cout << s << " "; } cout << endl; for(int i=0;i<20;i++) { printf("%2d",i+1); for(int j=0;j<20;j++) cout << wmap[i][j]; if(i==6) cout << " : : 0 0 "; if(i==8) cout << " (Step):" << Step; if(i==10) cout << " 、 !" ; cout << endl; } return(1); } // bool Existed() { if((wmap[x-1][y-1][0]==-95&&wmap[x-1][y-1][1]==-16)|| (wmap[x-1][y-1][0]==-95&&wmap[x-1][y-1][1]==-15)) return false; else return true; } // bool Overflow() { if(x>20||x<1||y>20||y<1) { cout << " ! :"; return true; } else return false; } // int Play() { Showboard();// cout << " :"; while(cin >> x >> y) { if(x==0&&y==0) { Initboard(); Interface(); break; } if(Overflow()) continue; if(Existed()) { x--;y--;// 0 wmap[x][y][0]=-95; if(flag==1) { wmap[x][y][1]=-16; Step++; Showboard(); if(Judgewin()) { cout << "

" ; cout << " ! ?(y/n)"; cin >> Switch; if(Switch!='n') { Initboard(); Play(); } else return 1; } cout << " :"; flag=0; } else { wmap[x][y][1]=-15; Step++; Showboard(); if(Judgewin()) { cout << "
!" << endl; cout << " ! ?(y/n)"; cin >> Switch; if(Switch!='n') { Initboard(); Play(); } else return 1; } cout << " :"; flag=1; } } else { cout << " ! :"; } } return 0; } int main() { CopyB();// , Interface();// return 0; }

좋은 웹페이지 즐겨찾기