[ Foro de C++ ]

ahorcado

07-Apr-2019 09:26
Invitado (aaron)
1 Respuestas

hola buenas noches mi problema es que introduzco la palabra y corro el juego pero cuando pongo una sola letra no me aparece solamante gano cuando pongo toda la letra, espero me puedan ayudar , otra molestia esque si puede ser con mi mismo codigo se los agradeceria muchusimo.

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

using namespace std;
char secreta [20];
char usuario [20];
char entrada [20];


int buscar()
{
   int val=0;
   for (int i=0; i< strlen(secreta); i++)
   {
       if(secreta[i] == entrada[0])
       {
           val++;
           usuario[i] == entrada[0];
       }
   }
   return val;
}
void ini_us()
{
   usuario[0]='\0';
   for (int i=0; i<(strlen(secreta)); i++)
   {
       strcat(usuario, "_");
   }
   cout << usuario;
}


void establecer_pa()

{

   cout << "Escribe la palabra secreta\n";
   gets(secreta);
   gets(secreta);
   system("cls");
   return;
}
void juego()
{

   int aux,ind;
   int errores = 0;
   char c;
   ini_us();

   errores=0;
   do
   {
       cout << "\nErrores: " << errores
            << "\nPalabra: " << usuario
            << "\n\nEscribe una letra o la palabra completa: ";
       gets(entrada);
       if (strlen(entrada) == 1)
       {
           c = entrada[0];
           aux = buscar();
           if (aux == 0)
           {
               errores ++;
           }
       }
       else
       {
           ind = strcmp(secreta, entrada);
           if (ind != 0)
           {
               errores ++;
           }
           else
           {
               strcpy(usuario, entrada);
           }
       }
       system("pause");
   }
   while(errores < 5 && strcmp(usuario, secreta) != 0);
   if (errores==5)
   {
       cout << "Perdiste!!\n";
   }
   else
   {
       cout << "ganaste!!\n";
   }

}

void Menu()
{
   int op;
   do
   {
       cout << "Selecciona la opcion deseada \n"
            << "1 Establecer Palabra\n"
            << "2 Jugar\n"
            << "3 Salir\n";
       cin >> op;
       system("cls");


       switch(op)
       {
       case 1:
           establecer_pa();
           break;

       case 2:
           juego();
           break;
       case 3:
           cout << "adios\n";
           break;
       default:
           cout << "Opcion Incorrecta \n";
           Sleep(1000);
           system("cls");
       }

   }
   while(op != 6);
}


int main()
{
   Menu();
   return 0;
}


16-Apr-2019 14:39
Nacho Cabanes (+83)

Cuando es una letra, llamas a la función "buscar", que da un valor por defecto 0... pero 0 es una posición, válida, la primera. Deberías dar el valor inicial -1.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)