Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Ahorcado 3.0 Izar Mula soria y Francisco José Camacho Maya
- //M3 Programacion DAW Institut Badia del Valles
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #define TAM 100
- //Prototipos de funciones
- //Retorna un menu de presentacion.
- void menu();
- /*
- Recibe el vector palabra, elije una palabra del diccionario y la copia en el vector palabra por referencia
- Ademas retorna la longitud de la palabra elgida
- */
- int Escogepalabra(char *x);
- //Recibe por referencia vector secreta y por valor longitud y llena vector con guiones hasta longitud.
- void LlenarVectorSecreto(char *x,int y);
- //Recibe por valor intentos segun estos dibujara el monigote del ahorcado
- void monigote(int x);
- //Recibe por valor palabra y por referencia secreta ademas de recibir por valor longitud de palabra
- void Motor(char x[TAM],char *y,int l);
- void main(){
- char palabra[TAM],secreta[TAM];
- int longitud=0;
- longitud=Escogepalabra(&palabra[0]);
- LlenarVectorSecreto(&secreta[0],longitud);
- Motor(palabra,&secreta[0],longitud);
- }
- void menu(){
- printf(" ______ _ _ _\n");
- printf(" | ___ %c(_) (_) | |\n",92);
- printf(" | |_/ / _ ___ _ __ __ __ ___ _ __ _ __| | ___\n");
- printf(" | ___ %c| | / _ %c| '_ %c %c %c / / / _ %c| '_ %c | | / _` |/ _ %c\n",92,92,92,92,92,92,92,92);
- printf(" | |_/ /| || __/| | | | %c V / | __/| | | || || (_| || (_) |%c\n",92,92);
- printf(" %c____/ |_| %c___||_| |_| %c_/ %c___||_| |_||_| %c__,_| %c___/%c\n",92,92,92,92,92,92,92);
- printf(" \n");
- printf(" \n");
- printf(" ___ _ \n");
- printf(" / _ %c | |\n",92);
- printf(" / /_%c %c| |\n",92,92);
- printf(" | _ || |\n");
- printf(" | | | || |\n");
- printf(" %c_| |_/|_|\n",92);
- printf(" \n");
- printf(" ___ _ _\n");
- printf(" / _ %c | | | |\n",92);
- printf(" / /_%c %c| |__ ___ _ __ ___ __ _ __| | ___\n",92,92);
- printf(" | _ || '_ %c / _ %c | '__| / __| / _` | / _` | / _ %c\n",92,92,92);
- printf(" | | | || | | || (_) || | | (__ | (_| || (_| || (_) |\n");
- printf(" %c_| |_/|_| |_| %c___/ |_| %c___| %c__,_| %c__,_| %c___/\n",92,92,92,92,92,92);
- printf(" \n");
- printf(" \n");
- printf(" \n");
- printf(" \n");
- }
- int Escogepalabra(char *x){
- char dicionario [10][10]={{"maria"},{"casa"},{"pera"},{"nabos"},{"moroso"},{"perro"},{"ojo"},{"carro"},{"cancer"},{"flora"}};
- int len=0,r=0,i=0;
- //Semilla para el random
- srand(time(NULL));
- //Guardamos en r un numero entero del 0 al 9
- r=((rand()%10));
- //Calculo de longitud de la palabra elegida
- while(dicionario[r][len]!='\0'){
- len++;
- }
- len=len+1; //len+1 para guardar el \0 en vector x
- //Llenamos por referencia el vector x= a puntero de vector palabra
- for(i=0;i<len;i++){
- x[i]=dicionario[r][i];
- }
- //Retornamos la longitud de la cadena
- return len;
- }
- void LlenarVectorSecreto(char *x,int y){
- int i=0;
- for(i=0;i<y;i++){
- x[i]='?';
- if(y-i==1){ //El ultimo valor de la cadena sera \0 para que no salga un interrogante de mas ya que y=palabra+\0
- x[i]='\0';
- }
- }
- }
- void monigote(int x){
- if(x==6) {
- printf("________________\n");
- printf("| /\n");
- printf("|/\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|_______________\n");
- }
- else if(x==5){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| |\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- else if(x==4){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| |\n");
- printf("| |\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- else if(x==3){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| / |\n");
- printf("| |\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- else if(x==2){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| / | %c\n",92); // 92=\ En ASCII
- printf("| |\n");
- printf("|\n");
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- else if(x==1){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| / | %c\n",92);
- printf("| |\n");
- printf("| / \n");
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- else if(x==0){
- printf("________________\n");
- printf("| / |\n");
- printf("|/ |\n");
- printf("| ( )\n");
- printf("| / | %c\n",92);
- printf("| |\n");
- printf("| / %c\n",92);
- printf("|\n");
- printf("|\n");
- printf("|______________\n");
- }
- //Esto solo pasa si se recibe la variable ganar en vez de intentos
- else if(x==-1){
- printf("\n");
- printf("\n");
- printf(" (**)\n");
- printf(" //||%c%c\n",92,92);
- printf(" ||\n");
- printf(" // %c%c\n",92,92);
- printf("_______________________________________");
- printf("\n");
- printf("\n");
- }
- }
- void Motor(char x[TAM],char *y,int l){
- int intentos=7;
- int i=0,j=0,ganar=0;
- char letra=' ';
- char aux_secreta[TAM];
- //Bucle principal, parara cuando no queden intentos
- while(intentos>0) {
- menu();
- //Copio contenido de secreta(y) en aux_secreta(TY Izar :))
- for (i = 0; i < l; i++) {
- aux_secreta[i] = y[i];
- }
- //Imprimo los intentos actuales, monigote, el vector secreta, pido letra al usuario y limpio buffer
- printf("Tienes %i intentos\n", intentos);
- monigote(intentos);
- printf("\n%s\n", y);
- printf("Dime una letra:\n");
- scanf("%c",&letra);
- fflush(stdin);
- system("CLS");
- /*
- Bucle que recorrera hasta longitud de palabra(x) y comparara caracter a caracter
- si letra se encuentra en el vector palabra si es asi se sustituira el ? de secreta por letra
- */
- for (j = 0; j < l; j++) {
- if (y[j] == '?' && x[j] == letra) {
- y[j] = x[j];
- }
- }
- //Si aux_secreta y secreta(y) siguen siendo igual letra no se encuentra en palabra y se resta 1 intento.
- if (strcmp(aux_secreta,y)==0){
- printf("\nLastima Fallate\n");
- intentos--;
- }
- //Si secreta(y) y palabra(x) son iguales el usuario ha acertado y cortamos el bucle,usamos una flag para usarla despues
- if (strcmp(x,y)==0){
- ganar=-1;
- break;
- }
- }
- if(ganar==-1){
- printf("Has ganado Enhorabuena (De momento....)\n");
- monigote(ganar);
- system("PAUSE");
- }
- else if(intentos==0){
- system("CLS");
- printf("Has perdido, te has quedado sin intentos y por lo tanto estas muerto\n");
- monigote(intentos);
- printf("\n");
- system("PAUSE");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement