juego del gato
me preguntaba si me podrían ayudar un poco con este programita:
Tengo que hacer el juego del gato, donde el usuario decide el tamaño que será de n*n donde n es un número primo, para después dibujar la casilla donde en cada un de ellas estaran unos números que serviran de guía para el usuario al momento de escojer la casilla donde quieren colocar su signo, ya sea X u O, de tal forma que el juego queda algo por el estilo:
1 | 2 | 3 // Esto sería para el caso más común de gato
--------- // una casilla de 3*3
4 | 5 | 6
---------
7 | 8 | 9
El usuario indica en que casilla quiere colocar su signo y lo que hago es borrar el contenido y sustituirlo por el signo.
Mi duda, es que si podrían indicarme una manera sencilla de que el programa identifique al ganador, es decir, como podría hacer que el programa identifique que los signos, ya sean en diagonal, escalera o fila, sean los mismos para declarar a un ganador.
lo que tengo de código es lo siguiente:
void main()
{
int n, m, **tablas, turno, selec;
char marca;
cout << "Dame el numero de columnas y renglones que tendra el gaton";
cout << "Debe ser un numero par!n";
cin >> n;
clrscr();
turno = 1;
tablas = new int*[n];
for (int i=0; i<=n; i++)
tablas[i] = new int[n];
//cuadrícula
m=0;
for (int j=1; j<=(n*2)-1; j+=2){
for (int i=1; i<=(n*2)-1; i++){
if (i%2==0){
gotoxy(6+i*2, 4+j);
putch (179);
x=wherex();
y=wherey();
}else{
m++;
tablas[j][i]=m;
gotoxy(6+i*2, 4+j);
cout << m;
}
}
if (j<(n*2)-1){
for (int i=1; i<=(n*4)-1; i++){
gotoxy(6+i, 5+j);
putch(196);
}
}else{/*nada*/}
}
while (turno!=0);
if (turno==1){
gotoxy(x+2, y+2);
clreol();
cout << "Es el turno del primer jugadorrn";
cout << "Indique en que casilla colocara su Xrn";
cin >> selec;
marca = 'X';
for (int j=1; j<=n; j++){
for (int i=1; i<=n; i++){
if (tablas[j][i]==selec){
gotoxy(6+i*2, 4+j);
cout << " ";
gotoxy(6+i*2, 4+j);
cout << marca;
tablas[j][i]=0;
}
}
}
turno++;
}else{
gotoxy(x+2, y+2);
clreol();
cout << "Es el turno del segundo jugadorrn";
cout << "Indique en que casilla colocara su Orn";
cin >> selec;
marca = 'O';
for (int j=1; j<=n; j++){
for (int i=1; i<=n; i++){
if (tablas[j][i]==selec){
gotoxy(6+i*2, 4+j);
cout << " ";
gotoxy(6+i*2, 4+j);
cout << marca;
tablas[j][i]=0 ;
}
}
}
turno--;
}
}
Las librerías que utilizo son las más comunes, espero poder recibir la ayuda de alguien.
Muchas gracias
Tengo que hacer el juego del gato, donde el usuario decide el tamaño que será de n*n donde n es un número primo, para después dibujar la casilla donde en cada un de ellas estaran unos números que serviran de guía para el usuario al momento de escojer la casilla donde quieren colocar su signo, ya sea X u O, de tal forma que el juego queda algo por el estilo:
1 | 2 | 3 // Esto sería para el caso más común de gato
--------- // una casilla de 3*3
4 | 5 | 6
---------
7 | 8 | 9
El usuario indica en que casilla quiere colocar su signo y lo que hago es borrar el contenido y sustituirlo por el signo.
Mi duda, es que si podrían indicarme una manera sencilla de que el programa identifique al ganador, es decir, como podría hacer que el programa identifique que los signos, ya sean en diagonal, escalera o fila, sean los mismos para declarar a un ganador.
lo que tengo de código es lo siguiente:
void main()
{
int n, m, **tablas, turno, selec;
char marca;
cout << "Dame el numero de columnas y renglones que tendra el gaton";
cout << "Debe ser un numero par!n";
cin >> n;
clrscr();
turno = 1;
tablas = new int*[n];
for (int i=0; i<=n; i++)
tablas[i] = new int[n];
//cuadrícula
m=0;
for (int j=1; j<=(n*2)-1; j+=2){
for (int i=1; i<=(n*2)-1; i++){
if (i%2==0){
gotoxy(6+i*2, 4+j);
putch (179);
x=wherex();
y=wherey();
}else{
m++;
tablas[j][i]=m;
gotoxy(6+i*2, 4+j);
cout << m;
}
}
if (j<(n*2)-1){
for (int i=1; i<=(n*4)-1; i++){
gotoxy(6+i, 5+j);
putch(196);
}
}else{/*nada*/}
}
while (turno!=0);
if (turno==1){
gotoxy(x+2, y+2);
clreol();
cout << "Es el turno del primer jugadorrn";
cout << "Indique en que casilla colocara su Xrn";
cin >> selec;
marca = 'X';
for (int j=1; j<=n; j++){
for (int i=1; i<=n; i++){
if (tablas[j][i]==selec){
gotoxy(6+i*2, 4+j);
cout << " ";
gotoxy(6+i*2, 4+j);
cout << marca;
tablas[j][i]=0;
}
}
}
turno++;
}else{
gotoxy(x+2, y+2);
clreol();
cout << "Es el turno del segundo jugadorrn";
cout << "Indique en que casilla colocara su Orn";
cin >> selec;
marca = 'O';
for (int j=1; j<=n; j++){
for (int i=1; i<=n; i++){
if (tablas[j][i]==selec){
gotoxy(6+i*2, 4+j);
cout << " ";
gotoxy(6+i*2, 4+j);
cout << marca;
tablas[j][i]=0 ;
}
}
}
turno--;
}
}
Las librerías que utilizo son las más comunes, espero poder recibir la ayuda de alguien.
Muchas gracias
