Esto lo hago desesperado, y esperanzado en q alguno de ustedes me pueda ayudar, se lo cuento a quien mayor confianza les tengo… el codigo lo pego abajo
Soy nuevo en la programacion, el lenguaje q mas uso es el C++, actualmete, lo ultimo q estudie fueron funciones, y arreglos…
Para reafirmar esos conocimientos trate de hacer con codigo de C++ el juego del gato (por lo menos algo q se le pareciera mucho), según yo estoy bien en el codigo, y el programa deberia funcionar a la perfeccion (se q estoy mal, jeje por q el programa no lo hace)… explico donde creo esta el error (de nuevo, segun yo, solo hay dos opciones en donde puedo estar mal)…
El error es q no saca quien gana, cuando deberia hacerlo…
El codigo lo pego abajo
1.- Hice 8 sumas(hay ocho opciones de ganar en el gato), utilize 1 para jugador uno, y 7 para el jugador dos, asi q si la suma es 3, deberia ganar el uno.. y si es 21 deberia ganar el 2 (esto lo hice en una funcion)… y estas sumas determinaba el Status estadoDelJuego, osea q para mi, el error puede estar en las sumas, o en el cambio de Status (ambas cosas vienen en la funcion)…
de antemano, gracias por su ayuda, se q es muy engorroso checar errores q no se muestran a la hora de compilar…
#include <cstdlib>
#include <iostream>
#include <iomanip> // Nota, recordar q es necesario para utilizar setw…
using namespace std;
using std::cout;
using std::cin;
using std::setw;
int suma1 = 0, suma2 = 0, suma3 = 0, suma4 = 0, suma5 = 0, suma6 = 0, suma7 = 0, suma8 = 0, k, m;
#include <cstdlib> // Es necesario, para utlizar srand
#include <ctime> // Para el argumento time, la semilla del sram
int apocoGanaste (); // Prototipo de la funcion
int gato [3] [3];//declaracion del arreglo…
enum Status { CONTINUA, GANAJUGADOR1, GANAJUGADOR2, EMPATARON };
Status estadoDelJuego;
int main()
{
int bandera, i, j, contadordemuestra = 0;
// Reglas del juego…
cout << " Hola, bienvenido a una version un tanto bizarra del popular juego, El gato.\\n";
cout << " Este programa fue elabora por Gustavo Flores Becerril, iniciado el lunes 29 de septiembre de 2008 a las 7 con 19\\n Realize un esfuerzo por apegarme lo mas posible al juego original, pero debido a que aun tengo pequeñas habilidades programando, no sera identico…\\n";
cout << "A continuacion te mostrare las diferencias entre el juego original y este, q estas por probar, habiso que las reglas del juego son identicas, solo explicare las cosas que cambian…";
cout << "\\n\\n 1.- A diferencia del juego original, aqui utlizaremos el numero 1 (en lugar de O) y el numero 7 (en lugar de X)";
cout << "\\n\\n 2.- Debido al poco conocimiente de programacion del creador de este proyecto, no se pudo colocar las dos lineas verticales (paralelas) y las dos lineas horizontales (paralelas entre si, y perpendiculares a las vertiales), asi q espero por favor hagas tu maximo esfuerzo en imaginarlas\\n";
cout << "\\n\\n\\n Explicado lo anterio, procederemos al juego, ¿que les parece si desidimos quien sera el proximo jugador con un numero aleatorio?, habra dos posibilidades 1 o 2, uno de ustedes elija un numero, si adibina, sera el primer jugador… Si estan listos para sacar el numero aleatorio presiona -1, o cualquier otro valor para salir\\n";
cin >> bandera;
if ( bandera != -1)
{
system ("PAUSE");
return EXIT_SUCCESS;
}
srand( time( 0 ) );
cout << "\\n ¿Quien comienza?, el numero generado fue:" << setw (5) << (1 + rand() % 2) << "\\n\\n\\n";
cout << "\\n Una regla extra, acontinuacion se muestra como ingresar las coordenadas, con numeros del 1 al 9… el orden es el siguiente\\n\\n\\n" << setw (15);
for (i = 1; i <= 3; i++){
for (j = 1; j <=3; j++){
++contadordemuestra;
gato [i] [j] = contadordemuestra;
cout << gato [i] [j] << setw (2);
if (j == 3){
cout << "\\n" << setw (15);
}// fin del if
}// fin del ciclo anidado for
}// fin del primer for
cout << "\\n Este es un ejemplo de lo que sucederia, si el jugador uno, seleccionara la casilla 9 en su primer turno…\\n\\n\\n" << setw (15);
for (i = 1; i <= 3; i++){
for (j = 1; j <=3; j++){
gato [i] [j] = 0;
if ( i == 3 && j == 3){
gato [i] [j] = 1;}//fin del ciclo if
cout << gato [i] [j] << setw (2);
if ( i == 3 && j == 3){
gato [i] [j] = 0;}
if (j == 3){
cout << "\\n" << setw (15);
}// fin del if
}// fin del ciclo anidado for
}// fin del primer for
int contadordejugadas = 0;
int ubicacion;// determina donde el jugador va a colocar su movimiento
do{
contadordejugadas++;
if ((contadordejugadas % 2) != 0)
{
cout << "\\n Jugador 1 has tu movimiento…\\n\\n\\n";
}
else {
cout << "\\n Jugador 2 has tu movimiento…\\n\\n\\n";
}
cin >> ubicacion;// determina donde el jugador va a colocar su movimiento
switch ( ubicacion ) {
case 1:
if (contadordejugadas % 2 != 0){
gato [1] [1] = 1;}
else{
gato [1] [1] = 7;}
break;
case 2:
if (contadordejugadas % 2 != 0){
gato [1] [2] = 1;}
else{
gato [1] [2] = 7;}
break;
case 3:
if (contadordejugadas % 2 != 0){
gato [1] [3] = 1;}
else{
gato [1] [3] = 7;}
break;
case 4:
if (contadordejugadas % 2 != 0){
gato [2] [1] = 1;}
else{
gato [2] [1] = 7;}
break;
case 5:
if (contadordejugadas % 2 != 0){
gato [2] [2] = 1;}
else{
gato [2] [2] = 7;}
break;
case 6:
if (contadordejugadas % 2 != 0){
gato [2] [3] = 1;}
else{
gato [2] [3] = 7;}
break;
case 7:
if (contadordejugadas % 2 != 0){
gato [3] [1] = 1;}
else{
gato [3] [1] = 7;}
break;
case 8:
if (contadordejugadas % 2 != 0){
gato [3] [2] = 1;}
else{
gato [3] [2] = 7;}
break;
case 9:
if (contadordejugadas % 2 != 0){
gato [3] [3] = 1;}
else{
gato [3] [3] = 7;}
break;
default:
cout << "Introdujeron una casilla inexistente\\n";
}// Fin del switch
cout << "\\n" << setw (15);
for (i = 1; i <= 3; i++){
for (j = 1; j <=3; j++){
cout << gato [i] [j] << setw (2);
if ( j == 3){ // inicio
cout << "\\n" << setw (15);
} // if final
} // final de for anidado
}// final del primer for
if ( contadordejugadas >= 5 && contadordejugadas <= 9){ // if inicio, primer if
int apocoGanaste (void);
if (estadoDelJuego == GANAJUGADOR1 ){ // if inicio
cout << "Felicidades jugador 1, has vencido en este juego\\n";
system("PAUSE");
return EXIT_SUCCESS;}// if final
if (estadoDelJuego == GANAJUGADOR2 ){ // if inicio
cout << "Felicidades jugador 2, has vencido en este juego\\n";
system("PAUSE");
return EXIT_SUCCESS;}// if final
if (estadoDelJuego == CONTINUA ){// if inicio
cout << "\\n\\nJuego competido\\n";} // if final
if ( contadordejugadas == 9){// if inicio
estadoDelJuego == EMPATARON;
cout << "\\nBuen esfuerzo de los dos, han empatado\\n";}//if final
}// primer if, final
} while ( contadordejugadas < 9);
system("PAUSE");
return EXIT_SUCCESS;
}
// Funcion apocoGanaste
int apocoGanaste(Status)
{
for ( k = 1; k <= 3; k++){
suma1 += (gato [k] [1]);}
if (suma1 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma1 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( k = 1; k <= 3; k++){
suma2 += (gato [k] [2]);}
if (suma2 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma2 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( k = 1; k <= 3; k++){
suma3 += (gato [k] [3]);}
if (suma3 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma3 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( m = 1; m <= 3; m++){
suma4 += (gato [1] [m]);}
if (suma4 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma4 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( m = 1; m <= 3; m++){
suma5 += (gato [2] [m]);}
if (suma5 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma5 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( m = 1; m <= 3; m++){
suma6 += (gato [3] [m]);}
if (suma6 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma6 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( k = 1; k <= 3; k++){
m = 1;
suma7 += (gato [k] [m]);
m++; }
if (suma7 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma7 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
for ( k = 3; k >= 1; k–){
m = 1;
suma8 += (gato [k] [m]);
m++; }
if (suma8 == 3){
estadoDelJuego = GANAJUGADOR1;}//fin del primer if
if (suma8 == 21){
estadoDelJuego = GANAJUGADOR2;}
else{
estadoDelJuego = CONTINUA;}//fin del segundo if
return estadoDelJuego;
}