#define WATER 0 #define SHIP 1 #define MISSED 1 #define HIT 2 #define SANK 3 #define GRID 10 #include #include #include using namespace std; int v[20][20]; int op[20][20]; int q[100][5], qi = 0, ql = 0, li = 0, lj = 0; int initx[] = {10, 9, 8, 6, 7, 5, 4, 3, 2, 1}; int inity[] = {10, 9, 8, 6, 7, 5, 4, 3, 2, 1}; int initt[] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1}; int getRP() { return (rand() % GRID) + 1; } int getRP2() { return rand() % 2; } bool validPoint(int x, int y) { if (x>=1 && x<=10 && y>=1 && y<=10) return true; return false; } bool checkShip(int x, int y, int t, int w) { int i; if (t == 0) { if (x+w-1 > GRID) return false; for (i=x;i<=x+w-1;i++) { if (v[i][y] == SHIP) return false; } } else { if (y+w-1 > GRID) return false; for (i=y;i<=y+w-1;i++) { if (v[x][i] == SHIP) return false; } } return true; } void setShip(int x, int y, int t, int w) { int i; if (t == 0) { for (i=x;i<=x+w-1;i++) { v[i][y] = SHIP; } } else { for (i=y;i<=y+w-1;i++) { v[x][i] = SHIP; } } } void setOneShip(int w) { int x, y, t, found; x = getRP(); y = getRP(); t = getRP2(); found = checkShip(x,y,t,w); while (!found) { x = getRP(); y = getRP(); t = getRP2(); found = checkShip(x,y,t,w); } setShip(x,y,t,w); cout< GRID) { li=(li+1)%GRID; } if (lj > GRID) { lj=lj%GRID; } if (op[li][li] != WATER) selectDiagonalPoint(); } void makeMove() { if (qi == ql) { selectDiagonalPoint(); } else { li = q[qi][0]; lj = q[qi][1]; qi++; } cout.flush(); cout<