Ahorcado

#include <iostream> #include <cstring> #include <cstdlib> #include <ctime> #include <conio.h> #include <stdio.h> // para usar texbox #include <windows.h> // Libreria que me permite utilizar el "Sleep(tiempo)"---> sirve para hacer una pausa de x tiempo using namespace std; #include <fstream> // para activar las funciones de manejo de texto using std::ifstream; //libreria para el menu principal y para el diseño del ahorcado # include "Menus.h" //para el ingreso de palabras void Ingreso_palabra( int ); //para cambiar de minisculas a mayusculas void CambioMayusMinus(char *); //imprime el avance de la palabra void valor_palabra(const char*,int&); /*nombre del archivo, donde se colocara la palabra retorna elarreglo dinamico de cadenas. int& tameño del arreglo.*/ char** cargar_palabra(const char*,char*,int&); //Para el Ingreso de Una nueva letra bool nueva_letra(const char*, char*, char); void main() { srand(time(0)); char** palabras = NULL; char palabraactual[100]; char archivo1[30]; char cadena[100]; char d; int cantidadpalabras = 40; int maximointentos; int tam = 0; int contador = 0; int longi; int msgboxID; bool load = false; int opcionM; //Para menu principal int llamar = 1; // llama al ingreso de palabras do { //para mostrar el "_" para cada letra de cada palabra for(int i=0; i<100; i++) { cadena[i] = '2'; } //inicializamos el menu opcionM = Menu_Principal(); switch ( opcionM ) { // llamamos a la funcion de ingreso de palabras case 1: system("cls"); Ingreso_palabra( llamar ); break; // Empieza el Juego case 2: //inicializado de variables d = NULL; cadena[100] = NULL; palabras = NULL; palabraactual[100] = NULL; archivo1[30] = NULL; tam = 0; contador = 0; longi = 0; msgboxID = MessageBox(NULL,TEXT("Solo utiliza las las letras de la A - Z sin ENTER"),TEXT("INFORMACION"),MB_ICONASTERISK | MB_OK ); // cargamos el archivo de texto if (!load) { cin.getline(archivo1,30); if (!archivo1[0]) strcpy(archivo1,"ahorcado.txt"); } //Cargamos la palabra que se escoge aleatoriamente palabras = cargar_palabra(archivo1,palabraactual,cantidadpalabras); while(true) if(palabraactual[tam]) tam++; else break; maximointentos = 6; // Inicializamos los inteneto system("cls"); //Empieza y corremos el juego para el Ingreso de palabras do { system("color f0"); tranca();// la base del ahorcado gotoxy(5,23);cout <<"Le Quedan " << maximointentos << " intentos"; // llamamos la funcion que nos separa la palabra valor_palabra(cadena,tam); //con esta separamos la pabra para no limpiar la pantalla y no se nos amontonen las letras longi = strlen(palabraactual); for (int P=1; P<=longi; P++) { cout << " "; } // Nos pide ingresar una letra gotoxy(5,3);cout << "Introduzca una letra: "; d = getch(); // solo toma un caracter, alfanumerio, un espacio o un enter d = toupper(d); // nos convierte la letra seleccionada a mayusculas gotoxy(27,3);cout << d; // motramos en pantalla el caracter seleccionado if(!nueva_letra(palabraactual,cadena,d)) maximointentos--; contador = 0; for(int pp=0; pp<tam; pp++) if(cadena[pp] == palabraactual[pp]) contador++; if(contador == tam) { gotoxy(5,15);cout << "H A S G A N A D O !"; gotoxy(5,6);cout << palabraactual << " "; gotoxy(5,24);system("pause"); break; } //Muestra cada parte del cuerpo if (maximointentos == 5) cabeza(); if (maximointentos == 4) cuerpo(); if (maximointentos == 3) brazo_derecho(); if (maximointentos == 2) brazo_izquierdo(); if (maximointentos == 1) pie_derecho(); if (maximointentos == 0) pie_izquierdo(); }while( maximointentos > 0 );// FIN DEL WHILE if( maximointentos <= 0 ) { gotoxy(5,15);cout << "H A S P E R D I D O !" << endl; gotoxy(42,6);cout << " : 0 0 ; " << endl; gotoxy(42,9);cout << " \\ (--) / " << endl; gotoxy(5,16);cout << "La palabra era: " << palabraactual << endl; gotoxy(5,24);system("pause"); } for( int i=0; i<100 ;i++) { cadena[i]='2'; } break; case 3: break; default: system("cls"); gotoxy(28,12);cout << "ERROR. opcion no valida" << endl; getch(); break; } //fin del switch }while( opcionM != 3 ); //fin del do while }// fin del main() void Ingreso_palabra( int Ingreso ) { char cadena[128][128];//bidemencional, letras palabras, como decir filas columnas int x = 0; int cantidad = 0; // para la capturar cantidad de palabras int palabras; // Crea un fichero de salida ofstream guardar; // guardar.open ("ahorcado.txt", ios::app); gotoxy(30,1);cout << "INGRESO DE PALABRAS"; gotoxy(5,5);cout << "Cuantas palabras va a ingresar: "; cin >> cantidad; system("cls"); for (x=0; x<cantidad; x++) { cout << "palabra " << x << ": "; cin >> cadena[x]; CambioMayusMinus(cadena[x]); // llamamos a la funcion para que nos guarde toas las palabras a mayusculas } //nos muestra todos lo arreglos que tenemos guardados system("cls"); for (int w=0; w<x; w++) { cout << cadena[w] << endl; guardar << cadena[w] << endl; // mandar a guardar al texto } system("pause"); } /*el primer parametro representa el nombre del archivo, donde se colocara las palabras retorna elarreglo dinamico de cadenas.El tercer parametro guarda el tamaño del arreglo*/ char** cargar_palabra(const char* archivo, char* palabra, int& tam) { ifstream words(archivo); int cuenta; if(!words) { cout <<"No se puede abrir el archivo no existe"<<endl; system("Pause"); } int i = rand()% 30;//numero de palabras posibles; for (int k=0; k<=i; k++) { words >> palabra; } char** array = new char*[tam]; if(!array) { cout << "no hay memoria"; system("Pause"); } for(int t=0; t< 25; t++) { array[t] = NULL; } int y = 0; while(palabra[y]) { array[y] = new char; *array[y] = palabra[y]; y++; } words.close(); return array; } /*toma el caracter del tercer parametro y verifica si esta en la palabra que va en el primer parametro, si esta entonces lo colocara en la o las posiciones adecuadas en la cadena que va en el segundo parametro, retorna true si esta o false si no esta*/ bool nueva_letra(const char* p_actual, char* act, char letra) { int q = 0; bool retval = false; while(p_actual[q]) { if (letra == p_actual[q]) { act[q] = letra; retval = true; } q++; } return retval; } /*Imprime el avance que lleva la palabra*/ void valor_palabra(const char* temp, int& lim) { gotoxy(5,6); for(int s=0; s<lim; s++) if(temp[s] == '2') cout << "_" << " "; else cout << temp[s]; } //funcio para cambiar toda la cadena de caracteres a mayusculas void CambioMayusMinus(char *PtrCadena) { while( *PtrCadena != '\0') { if(islower(*PtrCadena)) *PtrCadena = toupper(*PtrCadena); else *PtrCadena; PtrCadena++; } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.